1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J MALAN: betul, jadi ini adalah CS50. 3 00:00:13,060 --> 00:00:15,040 Dan ini adalah jelas pada Jumaat. 4 00:00:15,040 --> 00:00:16,850 Dan ini adalah akhir minggu satu. 5 00:00:16,850 --> 00:00:21,020 Jadi, anda mungkin ingat bahawa kita berhenti, Kali terakhir, dengan cliffhanger kejayaannya. 6 00:00:21,020 --> 00:00:25,020 Di mana kita mendedahkan pembohongan ini, bahawa tidak ada kira apa yang diajar semakin meningkat 7 00:00:25,020 --> 00:00:31,610 up, 1 dibahagikan dengan 10 tidak, dalam Malah, 0,1 atau 0,100 atau 0,10000. 8 00:00:31,610 --> 00:00:35,270 Malah, jika kita menyusun ini program, seperti yang kita lakukan semalam, dengan, 9 00:00:35,270 --> 00:00:39,770 membuat ketakpersisan, dan kemudian melakukan dot, slash, ketakpersisan, 10 00:00:39,770 --> 00:00:43,600 kita tahu bahawa ini adalah apa yang 1 dibahagikan dengan 10 sebenarnya. 11 00:00:43,600 --> 00:00:46,140 Jadi itu bukan benar-benar agak kes itu. 12 00:00:46,140 --> 00:00:49,014 Tetapi ini tidak tanda-tanda di beberapa had asas komputer. 13 00:00:49,014 --> 00:00:50,930 Dan sesungguhnya, di antara perkara yang kita akan lakukan 14 00:00:50,930 --> 00:00:55,130 hari ini adalah kita lihat mengapa ini mempunyai berlaku, apa implikasi ini mempunyai, 15 00:00:55,130 --> 00:00:58,430 bagaimana manusia telah gagal untuk memahami ini dalam beberapa sangat 16 00:00:58,430 --> 00:01:00,410 situations-- serius hasil daripada mana 17 00:01:00,410 --> 00:01:03,141 telah agak tragis dan expensive-- dan juga 18 00:01:03,141 --> 00:01:04,849 kita lihat bagaimana kita sebenarnya boleh mempertahankan 19 00:01:04,849 --> 00:01:06,530 terhadap jenis-jenis batasan. 20 00:01:06,530 --> 00:01:10,940 Jadi intuitif, mungkin, mengapa 1 dibahagikan dengan 10, 21 00:01:10,940 --> 00:01:15,480 mengikut komputer saya di sini, bukan hanya 1/10, 0.10? 22 00:01:15,480 --> 00:01:15,980 Yeah. 23 00:01:15,980 --> 00:01:16,530 Apa pendapat kamu? 24 00:01:16,530 --> 00:01:17,860 >> PENONTON AHLI: Radix ini berbeza? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J MALAN: The apa yang? 26 00:01:18,550 --> 00:01:19,730 Oh, Radix adalah berbeza? 27 00:01:19,730 --> 00:01:20,720 Jadi tidak cukup. 28 00:01:20,720 --> 00:01:23,200 Ini sebenarnya lebih asas kepada perkakasan. 29 00:01:23,200 --> 00:01:23,980 Pemikiran yang lain? 30 00:01:23,980 --> 00:01:24,584 Yeah. 31 00:01:24,584 --> 00:01:26,750 PENONTON AHLI: Mereka mewakili nombor yang berbeza? 32 00:01:26,750 --> 00:01:27,880 DAVID J MALAN: Jadi they-- kanan. 33 00:01:27,880 --> 00:01:29,338 Mereka mewakili nombor berbeza. 34 00:01:29,338 --> 00:01:30,700 Tidak tepat, nampaknya. 35 00:01:30,700 --> 00:01:33,190 Supaya is-- Nah, berbeza daripada apa? 36 00:01:33,190 --> 00:01:34,490 Atau dari siapa? 37 00:01:34,490 --> 00:01:35,050 Dari kami? 38 00:01:35,050 --> 00:01:35,966 PENONTON AHLI: Ya. 39 00:01:35,966 --> 00:01:38,930 Mereka tidak menggunakan perpuluhan sistem untuk [didengar]. 40 00:01:38,930 --> 00:01:39,680 DAVID J MALAN: OK. 41 00:01:39,680 --> 00:01:41,560 Jadi dalam erti kata, mereka tidak menggunakan sistem perpuluhan. 42 00:01:41,560 --> 00:01:43,720 Di bawah hood, segala-galanya adalah, sesungguhnya, binari, 43 00:01:43,720 --> 00:01:45,510 dan itulah yang berkaitan, sebenarnya. 44 00:01:45,510 --> 00:01:48,135 Tetapi ia lebih yang lebih mudah penjelasan daripada itu. 45 00:01:48,135 --> 00:01:48,635 Yeah. 46 00:01:48,635 --> 00:01:49,970 >> PENONTON AHLI: Mereka hanya mempunyai begitu banyak bit. 47 00:01:49,970 --> 00:01:52,370 Mereka hanya boleh menyimpan sehingga tertentu sejauh mana, seperti dengan perpuluhan. 48 00:01:52,370 --> 00:01:52,780 >> DAVID MALAN J: Ya. 49 00:01:52,780 --> 00:01:54,420 Ini adalah apa yang benar-benar mendapat ia. 50 00:01:54,420 --> 00:01:57,180 Ia ternyata bahawa komputer biasanya, akan sentiasa sahaja 51 00:01:57,180 --> 00:01:59,690 menggunakan sejumlah terhingga maklumat untuk mewakili sesuatu. 52 00:01:59,690 --> 00:01:59,870 Betul? 53 00:01:59,870 --> 00:02:02,110 Lagipun, kami hanya mempunyai yang tetap jumlah ruang cakera keras. 54 00:02:02,110 --> 00:02:04,210 Kami hanya mempunyai jumlah yang tetap RAM, atau memori komputer. 55 00:02:04,210 --> 00:02:06,251 Dan jika anda hanya mempunyai jumlah tetap sesuatu, 56 00:02:06,251 --> 00:02:09,611 pasti anda tidak boleh benar-benar mengira sehingga kepada infiniti atau sebarang nombor yang anda mahu. 57 00:02:09,611 --> 00:02:11,610 Anda, jenis, perlu memilih dan memilih apa yang pelbagai 58 00:02:11,610 --> 00:02:13,220 daripada nilai-nilai anda akan menyokong. 59 00:02:13,220 --> 00:02:18,100 >> Dan sebagainya misalnya, seminggu atau dua lalu, apabila kita bercakap tentang ASCII, 60 00:02:18,100 --> 00:02:21,610 dan kami berbual kira-kira 8 bit, atau bait, boleh dikatakan, 61 00:02:21,610 --> 00:02:26,360 bilangan terbesar yang kita boleh mewakili dengan 8 bit adalah apa? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 Dan kita boleh mewakili 256 jumlah nilai tetapi tidak jika kita menghabiskan salah seorang daripada mereka 64 00:02:31,850 --> 00:02:34,190 pada 0-- Baiklah, tetapi jika kita menghabiskan salah seorang daripada mereka pada 0, 65 00:02:34,190 --> 00:02:36,830 maka bilangan yang paling besar adalah, sudah tentu, 255. 66 00:02:36,830 --> 00:02:39,410 >> Jadi ternyata, bahawa ini adalah kes itu juga, dalam konteks ini. 67 00:02:39,410 --> 00:02:42,350 Kami mula bercakap, masa lalu, tentang nombor titik apung, yang 68 00:02:42,350 --> 00:02:44,640 adalah berbeza daripada bilangan bulat, dalam bahawa mereka mempunyai titik perpuluhan 69 00:02:44,640 --> 00:02:47,056 dan, diharapkan, beberapa nombor selepas itu, tetapi mereka terlalu. 70 00:02:47,056 --> 00:02:51,730 Komputer hanya biasanya akan menggunakan 32 bit, mungkin 64 bit 71 00:02:51,730 --> 00:02:53,497 untuk mewakili nilai mata terapung. 72 00:02:53,497 --> 00:02:56,080 Jadi, walaupun kita telah membesar pembelajaran matematik dan mengetahui 73 00:02:56,080 --> 00:02:58,750 bahawa anda benar-benar boleh mempunyai nombor terhingga nombor 74 00:02:58,750 --> 00:03:01,650 selepas titik perpuluhan, tidak jika anda mempunyai memori yang terhad. 75 00:03:01,650 --> 00:03:03,930 Anda, jenis, perlu pusingan, atau memilih mana 76 00:03:03,930 --> 00:03:05,346 nombor yang anda akan wakili. 77 00:03:05,346 --> 00:03:08,710 Dan supaya anda boleh berfikir, dari satu segi, ini menjadi komputer yang paling dekat 78 00:03:08,710 --> 00:03:14,050 anggaran kepada nilai 1/10 yang ia boleh mendapatkan, dengan hanya 32 atau lebih bit. 79 00:03:14,050 --> 00:03:15,300 Dan ia bukan hanya 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Sebagai contoh, jika saya menukar ini kepada 1/3, yang kita fikir adalah lebih mudah. 81 00:03:19,820 --> 00:03:21,300 Jadi 1 dibahagikan dengan 3. 82 00:03:21,300 --> 00:03:22,355 Biar saya menyimpan fail. 83 00:03:22,355 --> 00:03:24,680 Biar saya pergi ke hadapan dan susun semula ia. 84 00:03:24,680 --> 00:03:25,820 Dan biarlah saya berjalan semula. 85 00:03:25,820 --> 00:03:30,000 Di sini juga, nampaknya, 1/3 bukan 0.3 dan kemudian nombor terhingga 3 mengenai 86 00:03:30,000 --> 00:03:30,770 selepas itu. 87 00:03:30,770 --> 00:03:32,540 Anda perlu ketakpersisan ini pada akhir. 88 00:03:32,540 --> 00:03:35,544 Oleh itu, kita manusia adalah betul, dan apa yang anda belajar, sebenarnya, betul, 89 00:03:35,544 --> 00:03:37,460 tetapi kami menghentam terhadap beberapa batasan. 90 00:03:37,460 --> 00:03:39,420 >> Dan apa yang saya fikir kita akan lakukan hari ini, mula 91 00:03:39,420 --> 00:03:42,190 dengan melihat, terus terang, yang kesan tragis ini 92 00:03:42,190 --> 00:03:45,490 kadang-kadang, apabila manusia tidak cukup melaksanakan 93 00:03:45,490 --> 00:03:48,460 untuk realiti ini dan batasan-batasan ini. 94 00:03:48,460 --> 00:03:52,360 Dan kita akan melihat satu siri vignettes dari History Channel yang mengambil 95 00:03:52,360 --> 00:03:53,950 lihat bagaimana perkara pergi salah. 96 00:03:53,950 --> 00:03:56,340 Ia kira-kira 8 minit, dan kami akan kembali selepas ini 97 00:03:56,340 --> 00:03:59,439 dan kita lihat betul-betul apa lagi yang boleh pergi salah. 98 00:03:59,439 --> 00:04:00,605 Jika kita boleh malap lights-- 99 00:04:00,605 --> 00:04:02,350 >> [VIDEO MAIN SEMULA] 100 00:04:02,350 --> 00:04:06,310 >> -Computers, Kami semua datang untuk menerima masalah yang sering mengecewakan bahawa 101 00:04:06,310 --> 00:04:07,750 pergi bersama mereka. 102 00:04:07,750 --> 00:04:11,370 Bugs, virus, dan perisian gangguan adalah harga kecil 103 00:04:11,370 --> 00:04:13,230 membayar untuk kemudahan. 104 00:04:13,230 --> 00:04:17,519 Tetapi dalam teknologi tinggi dan kelajuan tinggi tentera dan program angkasa aplikasi, 105 00:04:17,519 --> 00:04:22,130 masalah yang paling kecil boleh akan menjadi besar ke dalam bencana. 106 00:04:22,130 --> 00:04:27,750 Pada 4 Jun 1996, ahli-ahli sains yang disediakan untuk melancarkan tanpa pemandu Ariane 5 roket. 107 00:04:27,750 --> 00:04:29,890 Ia membawa saintifik satelit yang direka 108 00:04:29,890 --> 00:04:33,030 untuk mewujudkan dengan tepat bagaimana Berinteraksi medan magnet bumi 109 00:04:33,030 --> 00:04:35,600 dengan angin solar. 110 00:04:35,600 --> 00:04:37,930 Roket ini dibina untuk Agensi Angkasa Eropah 111 00:04:37,930 --> 00:04:41,620 dan diangkat dari dari kemudahannya di pantai French Guiana. 112 00:04:41,620 --> 00:04:44,924 >> -Dan Kira-kira 30 saat ke dalam penerbangan, mereka mula-mula 113 00:04:44,924 --> 00:04:46,340 sesuatu yang perasan akan salah. 114 00:04:46,340 --> 00:04:49,280 Bahawa muncung telah berputar dengan cara yang mereka benar-benar tidak sepatutnya. 115 00:04:49,280 --> 00:04:53,042 Kira-kira 40 saat ke dalam penerbangan, jelas kenderaan itu dalam kesusahan, 116 00:04:53,042 --> 00:04:55,250 dan apabila mereka membuat keputusan untuk memusnahkan ia. 117 00:04:55,250 --> 00:04:58,970 A Pegawai Keselamatan Julat dengan keberanian besar ditekan butang, 118 00:04:58,970 --> 00:05:03,940 meletupkan roket sebelum ia boleh menjadi bahaya kepada keselamatan awam. 119 00:05:03,940 --> 00:05:06,600 >> -Ini Adalah sulung pelayaran Ariane 5, 120 00:05:06,600 --> 00:05:09,270 dan kehancuran mengambil meletakkan kerana kecacatan 121 00:05:09,270 --> 00:05:10,992 tertanam dalam perisian roket. 122 00:05:10,992 --> 00:05:12,700 -The Masalah pada Ariane adalah bahawa terdapat 123 00:05:12,700 --> 00:05:15,370 adalah nombor yang diperlukan 64 bit untuk menyatakan, 124 00:05:15,370 --> 00:05:18,150 dan dia mahu menukar kepada beberapa 16 bit. 125 00:05:18,150 --> 00:05:21,160 Mereka mengandaikan bahawa jumlah tidak pernah akan menjadi sangat besar, 126 00:05:21,160 --> 00:05:25,020 bahawa kebanyakan mereka digit dalam nombor 64 bit adalah 0 kanak. 127 00:05:25,020 --> 00:05:26,310 Mereka adalah salah. 128 00:05:26,310 --> 00:05:28,680 >> -The Ketidakupayaan satu program perisian untuk menerima 129 00:05:28,680 --> 00:05:32,820 jenis nombor yang dijana oleh lain merupakan punca daripada kegagalan itu. 130 00:05:32,820 --> 00:05:37,190 Pembangunan perisian telah menjadi bahagian yang sangat mahal teknologi baru. 131 00:05:37,190 --> 00:05:40,760 Ariane 4 roket telah sangat berjaya, jadi banyak perisian 132 00:05:40,760 --> 00:05:43,990 dicipta untuk itu juga digunakan pada Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -The Masalah asas adalah bahawa Ariane 5 adalah lebih cepat, mempercepatkan lebih cepat. 134 00:05:49,750 --> 00:05:53,000 Dan perisian yang tidak mempunyai menyumbang untuk itu. 135 00:05:53,000 --> 00:05:56,330 >> -The Kemusnahan roket adalah bencana kewangan yang besar, 136 00:05:56,330 --> 00:05:59,670 semua kerana kesilapan perisian minit. 137 00:05:59,670 --> 00:06:01,990 Tetapi ini bukanlah yang pertama masa masalah penukaran data 138 00:06:01,990 --> 00:06:05,310 membelenggu teknologi roket moden. 139 00:06:05,310 --> 00:06:08,300 >> -Dalam Tahun 1991, dengan permulaan Perang Teluk Pertama, 140 00:06:08,300 --> 00:06:10,650 peluru berpandu Patriot mengalami jenis yang sama 141 00:06:10,650 --> 00:06:12,650 masalah jumlah penukaran. 142 00:06:12,650 --> 00:06:15,620 Oleh itu, 28 orang, 28 tentera Amerika 143 00:06:15,620 --> 00:06:18,440 terbunuh dan kira- 100 yang lain cedera, 144 00:06:18,440 --> 00:06:21,900 apabila Patriot, yang sepatutnya untuk melindungi daripada scuds masuk, 145 00:06:21,900 --> 00:06:24,630 gagal untuk api peluru berpandu. 146 00:06:24,630 --> 00:06:29,440 >> -Apabila Iraq menyerang Kuwait dan Amerika melancarkan Desert Storm pada awal tahun 1991, 147 00:06:29,440 --> 00:06:33,800 Bateri peluru berpandu Patriot telah dikerahkan untuk melindungi Arab Saudi dan Israel 148 00:06:33,800 --> 00:06:37,000 daripada serangan peluru berpandu Scud Iraq. 149 00:06:37,000 --> 00:06:40,610 Patriot ialah Amerika Syarikat, jarak sederhana permukaan-ke-udara sistem 150 00:06:40,610 --> 00:06:43,010 yang dikeluarkan oleh syarikat Raytheon itu. 151 00:06:43,010 --> 00:06:49,080 >> Saiz -The pemintas Patriot, sendiri, adalah kira-kira, kira-kira 20 kaki panjang. 152 00:06:49,080 --> 00:06:51,250 Dan ia mempunyai berat kira-kira 2000 pound. 153 00:06:51,250 --> 00:06:55,195 Dan ia membawa kepala peledak daripada about-- Saya fikir ia adalah kira-kira £ 150. 154 00:06:55,195 --> 00:06:59,500 Dan kepala peledak dengan sendirinya, mudah meletup yang tinggi, 155 00:06:59,500 --> 00:07:02,570 yang mempunyai serpihan di sekitarnya. 156 00:07:02,570 --> 00:07:06,890 Sarung kepala peledak adalah direka untuk bertindak seperti peluru. 157 00:07:06,890 --> 00:07:09,130 >> -The Peluru berpandu dibawa, 4 setiap bekas, 158 00:07:09,130 --> 00:07:12,080 dan diangkut oleh treler separuh. 159 00:07:12,080 --> 00:07:19,100 >> -The Patriot sistem anti peluru berpandu kembali sekurang-kurangnya 20 tahun. 160 00:07:19,100 --> 00:07:22,320 Ia pada asalnya direka sebagai pertahanan peluru berpandu udara 161 00:07:22,320 --> 00:07:24,180 untuk menembak jatuh pesawat musuh. 162 00:07:24,180 --> 00:07:27,860 Dalam Perang Teluk Pertama, apabila perang yang datang bersama-sama, 163 00:07:27,860 --> 00:07:32,745 Tentera Darat mahu menggunakannya untuk menembak jatuh scuds, bukan kapal terbang. 164 00:07:32,745 --> 00:07:36,150 Tentera Iraq tidak begitu banyak masalah, 165 00:07:36,150 --> 00:07:39,110 tetapi Tentera bimbang tentang scuds. 166 00:07:39,110 --> 00:07:42,340 Dan kerana itu mereka cuba menaik taraf Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Musuh peluru berpandu bergerak pada datang lima 168 00:07:44,760 --> 00:07:47,250 itu akan mencabar cukup. 169 00:07:47,250 --> 00:07:50,000 Tetapi apabila Patriot dikejarkan ke dalam perkhidmatan, 170 00:07:50,000 --> 00:07:54,030 Tentera tidak sedar yang Pengubahsuaian Iraq yang dibuat 171 00:07:54,030 --> 00:07:56,840 scuds mereka hampir mustahil untuk memukul. 172 00:07:56,840 --> 00:08:01,020 >> -Apa Yang berlaku, adalah scuds yang telah datang, adalah tidak stabil, 173 00:08:01,020 --> 00:08:02,310 mereka terumbang-ambing. 174 00:08:02,310 --> 00:08:05,140 Sebab untuk ini, adalah orang Iraq, untuk 175 00:08:05,140 --> 00:08:09,450 untuk mendapatkan 600 kilometer daripada pelbagai peluru berpandu 300 kilometer, 176 00:08:09,450 --> 00:08:12,930 mengambil berat daripada kepala peledak depan dan membuat kepala peledak yang lebih ringan. 177 00:08:12,930 --> 00:08:17,710 Oleh sebab itu, ini Patriot cuba untuk datang di gerakan cepat, dan kebanyakan masa, 178 00:08:17,710 --> 00:08:21,700 majoriti daripada masa, ia hanya akan terbang dengan gerakan cepat itu. 179 00:08:21,700 --> 00:08:25,700 >> -Sebaik Sahaja pengendali sistem Patriot menyedari Patriot terlepas sasarannya, 180 00:08:25,700 --> 00:08:29,790 mereka meletupkan kepala peledak Patriot, untuk mengelakkan mangsa mungkin jika ia 181 00:08:29,790 --> 00:08:32,380 telah dibiarkan jatuh ke tanah. 182 00:08:32,380 --> 00:08:36,340 >> -Itu Adalah apa yang kebanyakan orang melihat, orang-orang bola api besar di langit, 183 00:08:36,340 --> 00:08:41,289 dan disalah anggap sebagai memintas kepala peledak Scud. 184 00:08:41,289 --> 00:08:43,590 Walaupun pada waktu malam langit, Patriots muncul 185 00:08:43,590 --> 00:08:47,020 untuk menjadi berjaya memusnahkan scuds, di Dhahran, 186 00:08:47,020 --> 00:08:49,730 mungkin ada kesilapan tentang prestasinya. 187 00:08:49,730 --> 00:08:53,990 Di sana, sistem radar Patriot kehilangan jejak yang Scud masuk, 188 00:08:53,990 --> 00:08:56,650 dan tidak pernah dilancarkan, atas sebab kecacatan perisian. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Ia adalah Israel yang pertama kali ditemui yang lagi sistem yang berada di atas, 191 00:09:04,100 --> 00:09:07,510 yang lebih besar perbezaan masa yang menjadi, kerana jam tertanam 192 00:09:07,510 --> 00:09:09,490 dalam komputer sistem. 193 00:09:09,490 --> 00:09:12,670 >> -Kira-Kira 2 minggu sebelum tragedi di Dhahran, 194 00:09:12,670 --> 00:09:15,010 Israel dilaporkan Jabatan Pertahanan, 195 00:09:15,010 --> 00:09:17,940 bahawa sistem telah kehilangan masa, bahawa selepas kira-kira 8 jam berjalan, 196 00:09:17,940 --> 00:09:21,410 mereka menyedari bahawa sistem itu menjadi nyata kurang tepat. 197 00:09:21,410 --> 00:09:25,290 Jabatan Pertahanan bertindak balas dengan memberitahu semua bateri Patriot 198 00:09:25,290 --> 00:09:28,070 untuk tidak meninggalkan sistem untuk jangka masa yang panjang. 199 00:09:28,070 --> 00:09:29,960 Mereka tidak pernah berkata apa masa yang lama adalah. 200 00:09:29,960 --> 00:09:30,460 8 jam? 201 00:09:30,460 --> 00:09:30,960 10 jam? 202 00:09:30,960 --> 00:09:31,870 1000 jam? 203 00:09:31,870 --> 00:09:33,734 Tiada siapa yang tahu. 204 00:09:33,734 --> 00:09:35,650 -The Patriot bateri ditempatkan di berek 205 00:09:35,650 --> 00:09:40,410 di Dhahran, dan dalaman cacat yang jam, telah di lebih 100 jam 206 00:09:40,410 --> 00:09:43,041 pada malam 25 Februari. 207 00:09:43,041 --> 00:09:47,416 >> -Ia Dikesan masa untuk ketepatan yang kira-kira 1/10 saat. 208 00:09:47,416 --> 00:09:49,290 Sekarang 1/10 yang kedua ialah nombor menarik 209 00:09:49,290 --> 00:09:52,700 kerana ia tidak boleh dinyatakan dalam binari, betul-betul. 210 00:09:52,700 --> 00:09:54,820 Maksudnya, ia tidak boleh dinyatakan, betul-betul, 211 00:09:54,820 --> 00:09:57,420 di mana-mana komputer digital moden. 212 00:09:57,420 --> 00:10:01,460 Sukar untuk percaya, tetapi menggunakan ini sebagai contoh. 213 00:10:01,460 --> 00:10:03,520 Mari kita jumlah itu, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 tidak boleh dinyatakan dalam perpuluhan, betul-betul. 215 00:10:07,110 --> 00:10:11,490 1/3 adalah 0,333 berlangsung selama infiniti. 216 00:10:11,490 --> 00:10:15,486 Tiada cara untuk berbuat demikian, dengan ketepatan mutlak, dalam perpuluhan. 217 00:10:15,486 --> 00:10:18,360 Itulah jenis yang sama masalah yang berlaku di Patriot. 218 00:10:18,360 --> 00:10:22,510 Semakin lama sistem itu berlari, yang lebih teruk ralat masa yang menjadi. 219 00:10:22,510 --> 00:10:28,420 >> -Selepas 100 jam operasi, kesilapan dalam masa hanya kira-kira 1/3 daripada kedua. 220 00:10:28,420 --> 00:10:31,830 Tetapi dari segi menyasarkan peluru berpandu bergerak pada datang 5, 221 00:10:31,830 --> 00:10:35,890 ia menyebabkan pengesanan yang kesilapan lebih 600 meter. 222 00:10:35,890 --> 00:10:38,970 Ia akan menjadi satu kesilapan yang teramat untuk tentera di Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> -Apa Yang berlaku, adalah pelancaran Scud adalah dikesan oleh satelit amaran awal, 224 00:10:45,035 --> 00:10:48,930 dan mereka yang baharu bahawa Scud adalah datang dari arah umum mereka. 225 00:10:48,930 --> 00:10:51,170 Mereka tidak tahu di mana ia datang. 226 00:10:51,170 --> 00:10:53,990 >> -Ia Kini sehingga radar komponen sistem Patriot, 227 00:10:53,990 --> 00:10:58,520 mempertahankan Dhahran, untuk mencari dan menyimpan mengesan peluru berpandu musuh yang masuk. 228 00:10:58,520 --> 00:10:59,690 >> Radar -The sangat pintar. 229 00:10:59,690 --> 00:11:01,710 Ia benar-benar akan mengesan kedudukan Scud 230 00:11:01,710 --> 00:11:04,040 dan kemudian meramalkan di mana ia mungkin akan menjadi, 231 00:11:04,040 --> 00:11:06,140 masa yang akan datang, radar menghantar nadi keluar. 232 00:11:06,140 --> 00:11:07,660 Yang dipanggil pintu julat. 233 00:11:07,660 --> 00:11:11,870 >> -Kemudian, Sebaik sahaja Patriot memutuskan masa yang cukup mempunyai 234 00:11:11,870 --> 00:11:16,280 diluluskan untuk kembali dan menyemak seterusnya lokasi untuk objek ini dikesan, 235 00:11:16,280 --> 00:11:17,280 ia kembali. 236 00:11:17,280 --> 00:11:21,690 Oleh itu, apabila ia kembali kepada salah tempat, ia kemudian melihat objek tidak 237 00:11:21,690 --> 00:11:25,230 dan ia memutuskan bahawa tidak ada objek, ia merupakan pengesanan palsu, 238 00:11:25,230 --> 00:11:26,650 dan jatuh trek. 239 00:11:26,650 --> 00:11:29,690 Scud diterima hilang dari skrin radar, 240 00:11:29,690 --> 00:11:32,670 dan saat kemudian, ia menyelar ke markas. 241 00:11:32,670 --> 00:11:38,100 Scud membunuh 28 dan yang terakhir satu dipecat semasa Perang Teluk Pertama. 242 00:11:38,100 --> 00:11:43,460 Malang sekali, perisian terkini tiba di Dhahran pada hari berikutnya. 243 00:11:43,460 --> 00:11:46,150 Kesilapan perisian mempunyai menjadi tetap, tutup 244 00:11:46,150 --> 00:11:48,940 salah satu bab dalam bermasalah sejarah peluru berpandu Patriot. 245 00:11:48,940 --> 00:11:50,220 >> [AKHIR MAIN SEMULA] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J MALAN: Jadi kita akan lihat pada beberapa batasan sama dalam hanya sedikit. 247 00:11:54,340 --> 00:11:58,470 Tetapi pertama, mari kita peralihan kepada beberapa FYI yang. 248 00:11:58,470 --> 00:12:01,575 Jadi one-- hujung minggu ini, akan menjadi bahagian super, 249 00:12:01,575 --> 00:12:04,200 yang bertujuan untuk menggantikan bahagian yang dijadualkan secara tetap, yang 250 00:12:04,200 --> 00:12:05,460 akan bermula minggu itu. 251 00:12:05,460 --> 00:12:08,204 Sila lihat di laman web CS50 untuk maklumat lanjut mengenai mereka. 252 00:12:08,204 --> 00:12:11,120 Mereka juga akan difilemkan dan distrim hidup untuk mereka yang tidak dapat hadir. 253 00:12:11,120 --> 00:12:12,980 Masalah menetapkan 1 adalah di laman web kursus ini sudah, 254 00:12:12,980 --> 00:12:15,105 dan kami akan mengambil lihat yang dalam hanya sedikit. 255 00:12:15,105 --> 00:12:18,350 Dan waktu pejabat juga akan mengambil meletakkan Isnin hingga Khamis. 256 00:12:18,350 --> 00:12:20,960 >> Jadi ini adalah yang paling berkanun program kita melihat pada masa lalu. 257 00:12:20,960 --> 00:12:23,590 Ia seperti yang paling mudah program yang anda boleh menulis dalam C, 258 00:12:23,590 --> 00:12:25,250 dan walaupun itu sedikit dengan satu tuntutan yang berani. 259 00:12:25,250 --> 00:12:25,750 Betul? 260 00:12:25,750 --> 00:12:28,070 Kerana ada banyak pura-pura kerumitan kepada ini. 261 00:12:28,070 --> 00:12:30,445 Jadi mari kita melihat cepat pada apa yang ada elemen-elemen ini 262 00:12:30,445 --> 00:12:33,080 telah dan kemudian cuba untuk menyediakan model mental untuk bagaimana 263 00:12:33,080 --> 00:12:35,710 ini paling mudah program bekerja, dan kemudian kami akan mula 264 00:12:35,710 --> 00:12:38,050 melihat sesuatu perkara yang lebih kompleks. 265 00:12:38,050 --> 00:12:41,280 Jadi garis ini di sini, yang diketengahkan sekarang, kuning, apa yang kita katakan, masa lalu, 266 00:12:41,280 --> 00:12:43,200 bahawa ini tidak untuk kita? 267 00:12:43,200 --> 00:12:45,220 Apakah maksud ia berfungsi? 268 00:12:45,220 --> 00:12:46,984 Sesiapa sahaja dari jauh ke belakang? 269 00:12:46,984 --> 00:12:47,483 Yeah. 270 00:12:47,483 --> 00:12:48,649 >> PENONTON AHLI: [didengar] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID MALAN J: Baik. 273 00:12:51,704 --> 00:12:53,537 Oleh itu, ia memberikan anda akses kepada arahan, atau mari kita 274 00:12:53,537 --> 00:12:56,750 memanggil mereka fungsi, bahawa seseorang lain menulis, yang diisytiharkan, 275 00:12:56,750 --> 00:12:58,350 boleh dikatakan, dalam beberapa fail lain. 276 00:12:58,350 --> 00:13:02,370 Oleh itu, kita akan melihat dengan jelas apa fail h adalah berbanding fail c, akhirnya. 277 00:13:02,370 --> 00:13:04,710 Tetapi buat masa ini, hanya tahu printf itu, misalnya, 278 00:13:04,710 --> 00:13:08,370 adalah antara fungsi-fungsi yang telah diisytiharkan dalam fail lain, di suatu tempat 279 00:13:08,370 --> 00:13:12,930 lain pada cakera keras awan bahawa membolehkan kita untuk mengakses printf dan menggunakannya 280 00:13:12,930 --> 00:13:15,240 tanpa perlu mencipta semula bahawa roda diri kita sendiri. 281 00:13:15,240 --> 00:13:16,930 Sementara itu, utama. 282 00:13:16,930 --> 00:13:19,690 Bagaimana akibat analog utama, minggu lepas? 283 00:13:19,690 --> 00:13:20,190 Yeah. 284 00:13:20,190 --> 00:13:21,460 >> PENONTON AHLI: bendera hijau diklik. 285 00:13:21,460 --> 00:13:21,740 >> DAVID MALAN J: Ya. 286 00:13:21,740 --> 00:13:23,490 Scratch, apabila bendera hijau diklik. 287 00:13:23,490 --> 00:13:25,560 Ia seperti sekeping teka-teki yang bermula berselindung. 288 00:13:25,560 --> 00:13:28,306 Dan begitu juga, tidak dunia telah memilih beberapa tahun yang lalu bahawa dalam C, 289 00:13:28,306 --> 00:13:30,930 dan mempunyai banyak bahasa lain, jika anda mahu menulis program, 290 00:13:30,930 --> 00:13:33,410 Fungsi pertama anda telah dipanggil, utama. 291 00:13:33,410 --> 00:13:34,641 Dan ia perlu kelihatan seperti ini. 292 00:13:34,641 --> 00:13:36,640 Tetapi kita akan kembali, masa yang lain, untuk apa, int, 293 00:13:36,640 --> 00:13:38,690 dan, tidak sah, bermakna dalam konteks itu. 294 00:13:38,690 --> 00:13:42,860 Buat masa ini, pendakap kerinting adalah jenis daripada seperti bentuk sekeping teka-teki Scratch 295 00:13:42,860 --> 00:13:45,080 yang merangkumi beberapa beberapa baris. 296 00:13:45,080 --> 00:13:47,070 Dan di antara di barisan di sini, adalah salah satu ini di sini. 297 00:13:47,070 --> 00:13:51,610 printf adalah fungsi yang tujuan dalam hidup adalah untuk mencetak rentetan diformat. 298 00:13:51,610 --> 00:13:55,010 Dan dengan diformat, saya maksudkan anda boleh pasangkan nilai pemegang tempat, 299 00:13:55,010 --> 00:13:58,360 dan anda boleh menentukan berapa banyak perpuluhan mata, berapa banyak nombor untuk mencetak 300 00:13:58,360 --> 00:14:00,040 selepas titik perpuluhan dan sebagainya. 301 00:14:00,040 --> 00:14:05,040 Dan printf, sudah tentu, mengambil masa satu atau lebih hujah atau parameter, 302 00:14:05,040 --> 00:14:06,770 atau dikenali, lebih mudah, sebagai input. 303 00:14:06,770 --> 00:14:09,230 >> Jadi printf, seperti banyak fungsi, mengambil input. 304 00:14:09,230 --> 00:14:12,730 Dan orang-orang input memeluk oleh kedua-dua kurungan di sini. 305 00:14:12,730 --> 00:14:15,180 Dan di dalam mereka adalah satu input. 306 00:14:15,180 --> 00:14:18,600 Ia rentetan, seperti yang kita telah memanggilnya, yang hanya jujukan aksara, 307 00:14:18,600 --> 00:14:22,310 seperti perkataan, atau frasa, atau keseluruhannya esei walaupun, di antara tanda petik. 308 00:14:22,310 --> 00:14:25,712 Dan itulah apa yang akan mempengaruhi tingkah laku printf kerana, sudah tentu, 309 00:14:25,712 --> 00:14:27,170 ia hanya satu fungsi cetak generik. 310 00:14:27,170 --> 00:14:29,600 Ia tidak akan tahu apa yang untuk mencetak, melainkan jika anda beritahu. 311 00:14:29,600 --> 00:14:31,000 Dan kemudian, beberapa detel. 312 00:14:31,000 --> 00:14:34,056 Apa yang kita katakan ini pelik urutan simbol-simbol itu? 313 00:14:34,056 --> 00:14:34,556 Yeah. 314 00:14:34,556 --> 00:14:35,410 >> PENONTON AHLI: Talian Baru. 315 00:14:35,410 --> 00:14:35,990 >> DAVID MALAN J: Talian Baru. 316 00:14:35,990 --> 00:14:39,340 Jadi ternyata, anda tidak boleh hanya melanda, memasuki, apabila anda menulis program. 317 00:14:39,340 --> 00:14:42,590 Secara umumnya, pengkompil akan mendapat sedikit keliru tentang apa yang anda maksudkan. 318 00:14:42,590 --> 00:14:45,340 Sebaliknya, anda perlu benar-benar berkata, berilah baris baru di sini. 319 00:14:45,340 --> 00:14:49,506 Dan sebagainya / n adalah apa yang kita umumnya memanggil watak melarikan diri. 320 00:14:49,506 --> 00:14:50,870 Jadi n, bagi talian baru. 321 00:14:50,870 --> 00:14:53,810 Dan pengkompil tahu bahawa apabila ia melihat / n, 322 00:14:53,810 --> 00:14:57,420 ia sebenarnya perlu mendorong komputer, akhirnya, atau printf, dalam kes ini, 323 00:14:57,420 --> 00:15:00,260 untuk mencetak yang baru yang sebenar line, seperti memukul, masukkan, 324 00:15:00,260 --> 00:15:01,480 kekunci pada papan kekunci anda. 325 00:15:01,480 --> 00:15:05,620 Dan akhir sekali, apa kata kita katakan ini sekeping sintaks adalah untuk? 326 00:15:05,620 --> 00:15:06,591 Apa yang ia mewakili? 327 00:15:06,591 --> 00:15:07,090 Yeah. 328 00:15:07,090 --> 00:15:07,490 >> PENONTON AHLI: [didengar] 329 00:15:07,490 --> 00:15:08,660 >> DAVID MALAN J: Ia hanya akhir baris. 330 00:15:08,660 --> 00:15:09,909 Ia adalah akhir kenyataan itu. 331 00:15:09,909 --> 00:15:11,890 Dan sedar bahawa kita tidak meletakkan mereka di mana-mana. 332 00:15:11,890 --> 00:15:13,900 Kita tentu tidak meletakkan mereka di hujung setiap baris. 333 00:15:13,900 --> 00:15:16,680 Sebagai contoh, ada yang tidak ada pada baris pertama, ada pun di talian 334 00:15:16,680 --> 00:15:18,680 dengan, utama, ada tiada selepas pendakap kerinting, 335 00:15:18,680 --> 00:15:21,740 tetapi anda akan mula melihat dan mendapatkan biasa dengan mana ia dipanggil untuk. 336 00:15:21,740 --> 00:15:26,014 Dan ia hampir sentiasa selepas majlis panggilan atau kenyataan, beberapa tindakan 337 00:15:26,014 --> 00:15:27,180 bahawa anda sebenarnya mengambil. 338 00:15:27,180 --> 00:15:29,520 >> Dan tahu sekarang, terutamanya jika di kalangan mereka yang kurang selesa, 339 00:15:29,520 --> 00:15:32,540 ini adalah jenis perkara-perkara bodoh bahawa anda akan berakhir tidak sengaja terhantuk 340 00:15:32,540 --> 00:15:33,873 kepala anda ke dinding atas. 341 00:15:33,873 --> 00:15:36,107 Kerana anda akan secara logik yakin dalam beberapa masalah 342 00:15:36,107 --> 00:15:38,440 anda telah diselesaikan untuk masalah set, dan perkara yang bodoh hanya 343 00:15:38,440 --> 00:15:40,187 tidak akan menyusun atau berjalan. 344 00:15:40,187 --> 00:15:43,270 Dan selalu, awal, ia akan kerana anda terlepas kurungan, 345 00:15:43,270 --> 00:15:44,455 atau anda terlepas koma bernoktah. 346 00:15:44,455 --> 00:15:46,547 Dan jadi hanya ingat jenis-jenis perkara, 347 00:15:46,547 --> 00:15:49,380 dan cuba untuk tidak kecewa dengan mereka kerana cepat melakukan ini 348 00:15:49,380 --> 00:15:50,640 menjadi topi lama. 349 00:15:50,640 --> 00:15:53,910 Tetapi ia adalah sangat mudah untuk mendapatkan kecewa awal, sebagai hasilnya. 350 00:15:53,910 --> 00:15:57,020 >> Oleh sebab itu, mari kita lihat bagaimana garis ini adalah benar-benar bekerja 351 00:15:57,020 --> 00:15:59,170 dan kemudian melihat yang sedikit satu lebih rumit. 352 00:15:59,170 --> 00:16:02,017 Oleh itu, kita mempunyai lebih daripada di sini, keupayaan untuk menarik pada skrin ini. 353 00:16:02,017 --> 00:16:04,100 Dan mari kita andaikan bahawa ini adalah skrin komputer saya, 354 00:16:04,100 --> 00:16:08,589 tetapi saya menulis, hello program ini, dan saya tidak dilaksanakan, printf. 355 00:16:08,589 --> 00:16:10,130 Pengguna lain telah dilaksanakan, printf. 356 00:16:10,130 --> 00:16:12,420 Yang ingin mendakwa telah melaksanakan, printf? 357 00:16:12,420 --> 00:16:12,920 Jika kita boleh? 358 00:16:12,920 --> 00:16:13,830 Baiklah, apa nama anda? 359 00:16:13,830 --> 00:16:14,155 >> PELAJAR 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J MALAN: Copal, datang ke atas. 361 00:16:15,529 --> 00:16:16,430 Naiklah. 362 00:16:16,430 --> 00:16:17,070 Baiklah. 363 00:16:17,070 --> 00:16:22,260 Jadi kita mempunyai, di sini, beberapa tag nama, kerana kita akan membuat permainan kecil ini. 364 00:16:22,260 --> 00:16:26,270 Dan kami akan menghubungi anda, printf. 365 00:16:26,270 --> 00:16:30,170 Dan jika anda ingin datang ke sini, apa yang saya baru sahaja dilukis pada skrin, 366 00:16:30,170 --> 00:16:32,340 ia adalah agak mudah, ada saya, ini. 367 00:16:32,340 --> 00:16:35,550 >> Baiklah, jadi, hello nama saya, printf, jika anda mahu untuk meletakkan bahawa pada. 368 00:16:35,550 --> 00:16:35,740 Baiklah. 369 00:16:35,740 --> 00:16:37,360 Dan jika anda boleh pergi pendirian oleh skrin komputer 370 00:16:37,360 --> 00:16:39,730 seolah-olah anda adalah fungsi yang datang dengan sistem komputer ini. 371 00:16:39,730 --> 00:16:42,063 Dan tujuan anda dalam hidup adalah untuk benar-benar mencetak sesuatu. 372 00:16:42,063 --> 00:16:44,560 Tetapi sama seperti program yang kami hanya mempunyai pada skrin, di sini, 373 00:16:44,560 --> 00:16:47,060 kita akan perlu benar-benar memberi anda masukkan beberapa. 374 00:16:47,060 --> 00:16:51,810 >> Dan sebagainya, jika input saya, di sini, adalah nampaknya, apa yang diserahkan kepada printf, 375 00:16:51,810 --> 00:16:53,730 mari kita jenis mengejek ia seperti ini. 376 00:16:53,730 --> 00:16:58,720 Saya akan benar-benar menulis pada sekeping kertas, "hello, dunia," 377 00:16:58,720 --> 00:17:03,020 garis miring N. Dan untuk menjadi jelas, apa Saya baru sahaja dikeluarkan atas sekeping kertas, 378 00:17:03,020 --> 00:17:04,020 kelihatan seperti ini. 379 00:17:04,020 --> 00:17:08,730 Oleh itu, apabila saya menjalankan program ini, dan ini garisan kuning kod mendapat dilaksanakan, 380 00:17:08,730 --> 00:17:12,970 ia seolah-olah saya, program hello itu, Kuserahkan input beberapa off ke fungsi 381 00:17:12,970 --> 00:17:13,970 bahawa orang lain menulis. 382 00:17:13,970 --> 00:17:16,595 >> Dan jika anda, dengan jari anda, boleh sebenarnya, dengan jari anda, 383 00:17:16,595 --> 00:17:21,520 menarik pada skrin apa sahaja ia adalah anda telah diserahkan, 384 00:17:21,520 --> 00:17:27,465 kesan, akhirnya, adalah untuk melihat dengan jelas bahawa, pada skrin. 385 00:17:27,465 --> 00:17:29,140 Dan kes sudut Little sini. 386 00:17:29,140 --> 00:17:31,540 Dan baik, kita tidak boleh melihat , talian baru, pada ketika ini. 387 00:17:31,540 --> 00:17:33,900 Adalah tidak betul untuk anda secara jelas menarik newline itu. 388 00:17:33,900 --> 00:17:36,810 Tetapi jika kita terus menulis perkataan pada skrin, mereka akan berakhir di bawah itu. 389 00:17:36,810 --> 00:17:39,560 >> Jadi terima kasih banyak, tetapi melekat di sekitar sini untuk satu masa. 390 00:17:39,560 --> 00:17:42,860 Kini kita perlu satu yang lain sukarela, jika kita boleh, 391 00:17:42,860 --> 00:17:46,830 yang akan perlu memainkan peranan daripada- Ia hanya orang dalam orkestra 392 00:17:46,830 --> 00:17:47,355 sekarang. 393 00:17:47,355 --> 00:17:47,980 Bagaimana about-- OK. 394 00:17:47,980 --> 00:17:48,480 Di sini. 395 00:17:48,480 --> 00:17:49,180 Naiklah. 396 00:17:49,180 --> 00:17:49,955 Siapa nama anda? 397 00:17:49,955 --> 00:17:50,922 >> PELAJAR 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID MALAN J: Maaf? 399 00:17:51,796 --> 00:17:52,990 PELAJAR 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J MALAN: Ethan, datang ke atas. 401 00:17:55,320 --> 00:17:55,820 Tidak? 402 00:17:55,820 --> 00:17:58,390 Adakah saya mendapatkan salah itu, walaupun selepas anda menyebutnya dua kali? 403 00:17:58,390 --> 00:17:58,890 Naiklah. 404 00:17:58,890 --> 00:18:00,030 Sukar untuk mendengar di sini. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 OKAY. 407 00:18:05,740 --> 00:18:07,190 Dan saya minta maaf, apa nama anda? 408 00:18:07,190 --> 00:18:07,680 >> PELAJAR 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J MALAN: Ivay. ?] OKAY. 410 00:18:08,790 --> 00:18:10,430 Buat masa ini, jika anda tidak fikiran, anda GetString. 411 00:18:10,430 --> 00:18:11,013 >> PELAJAR 2: OK. 412 00:18:11,013 --> 00:18:11,797 Sejuk. 413 00:18:11,797 --> 00:18:14,630 DAVID J MALAN: Jadi, jika anda mahu berdiri di sini hanya untuk seketika, 414 00:18:14,630 --> 00:18:17,100 mari kita lihat pada yang sedikit program yang lebih kompleks, yang 415 00:18:17,100 --> 00:18:18,670 kini mempunyai tiga baris kod. 416 00:18:18,670 --> 00:18:24,080 Oleh itu, kita perlu, satu, nyatakan nama anda menggunakan printf; dua, panggilan kepada GetString, 417 00:18:24,080 --> 00:18:28,060 diikuti dengan penyerahan hak kepada pembolehubah dipanggil, tali s, atau dipanggil s; 418 00:18:28,060 --> 00:18:31,260 dan kemudian satu lagi panggilan untuk, printf, tetapi kali ini dengan dua input. 419 00:18:31,260 --> 00:18:33,646 >> Negeri itu, kita telah dibentangkan nama, atau lebih tepat, kami telah 420 00:18:33,646 --> 00:18:34,770 dibentangkan panggilan printf. 421 00:18:34,770 --> 00:18:38,960 Jadi, saya akan menulis, Nyatakan nama anda. 422 00:18:38,960 --> 00:18:42,089 Dan sebagainya, apa yang saya akan lulus, printf, dalam hanya seketika, 423 00:18:42,089 --> 00:18:43,005 cukup sekadar ini. 424 00:18:43,005 --> 00:18:47,760 Jadi jika anda ingin pergi ke hadapan dan menarik ini pada skrin, itu input anda sekarang. 425 00:18:47,760 --> 00:18:48,260 Baiklah. 426 00:18:48,260 --> 00:18:51,160 Dan lupa tali, kita kini mempunyai garis kita sendiri kod di sini. 427 00:18:51,160 --> 00:18:54,470 Jadi, dalam, GetString, kita perlu untuk benar-benar memanggil, GetString. 428 00:18:54,470 --> 00:18:57,920 Jadi tujuan anda dalam hidup adalah untuk hanya berjalan keluar ke orkestra, jika anda boleh, 429 00:18:57,920 --> 00:18:58,980 dan mendapatkan nama seseorang. 430 00:18:58,980 --> 00:19:00,860 Tetapi mari kita memberikan anda sesuatu untuk meletakkan ia. 431 00:19:00,860 --> 00:19:02,908 Jika anda ingin, pergi hadapan dan mendapatkan tali, 432 00:19:02,908 --> 00:19:05,241 mendapatkan nama seseorang pada itu sehelai kertas, jika anda boleh. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Baiklah. 435 00:19:13,530 --> 00:19:15,250 Dan kita akan lihat, hanya seketika, yang namanya kami terima. 436 00:19:15,250 --> 00:19:17,630 Sementara itu, apa yang saya akan mempunyai bersedia, adalah sekeping kosong 437 00:19:17,630 --> 00:19:21,340 kertas, di mana, saya akan untuk menyimpan apa-apa nilai ia 438 00:19:21,340 --> 00:19:25,752 adalah bahawa GetString adalah kembali kepada saya, Saya, sebagai pembolehubah rentetan dipanggil, s. 439 00:19:25,752 --> 00:19:26,252 Baiklah. 440 00:19:26,252 --> 00:19:27,293 Jadi apa yang anda ada di sini? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Baiklah. 443 00:19:28,450 --> 00:19:30,910 Oleh itu, kita mempunyai nama Nik di sini. 444 00:19:30,910 --> 00:19:33,750 Jadi ini adalah apa yang benar-benar telah dikembalikan 445 00:19:33,750 --> 00:19:35,810 kepada saya, jadi untuk bercakap, oleh GetString. 446 00:19:35,810 --> 00:19:38,720 >> Saya, sekarang, Aku akan melaksanakan sebelah kiri tangan 447 00:19:38,720 --> 00:19:43,440 ungkapan itu, di mana saya hanya tulis, untuk tujuan hari ini, Nik. 448 00:19:43,440 --> 00:19:46,470 Jadi sekarang, saya mempunyai pembolehubah dipanggil, s, menyimpan nama Nik ini. 449 00:19:46,470 --> 00:19:49,520 Saya telah diserahkan kepada printf, hujah yang sebelumnya. 450 00:19:49,520 --> 00:19:52,800 Tetapi selaras ketiga dan terakhir kami kod, saya benar-benar perlu printf tangan 451 00:19:52,800 --> 00:19:58,500 sesuatu yang different-- sedikit "hello,% s," garis sendeng terbalik n. 452 00:19:58,500 --> 00:20:01,510 >> Dan sebagainya barisan terakhir saya akan untuk send-- perkara terakhir saya 453 00:20:01,510 --> 00:20:03,060 akan menulis sekarang, adalah ini. 454 00:20:03,060 --> 00:20:06,310 Jadi kedua-dua baris kod, atau agak barisan terakhir kod, 455 00:20:06,310 --> 00:20:10,690 Panggilan untuk dua inputs-- satu, ini, dan dua, ini. 456 00:20:10,690 --> 00:20:13,330 Jadi, jika fungsi printf kami kini boleh mengambil ini sebagai input, 457 00:20:13,330 --> 00:20:16,000 biarlah saya mengosongkan skrin untuk anda. 458 00:20:16,000 --> 00:20:17,250 Sebenarnya tidak, anda boleh pergi ke hadapan. 459 00:20:17,250 --> 00:20:19,333 Kami akan menyerahkannya, sejak ia pada program yang sama. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Kita harus melihat, hello, Nik. 462 00:20:27,380 --> 00:20:27,880 Baiklah. 463 00:20:27,880 --> 00:20:29,670 Jadi ini adalah cukup beberapa gelung untuk melompat melalui, hanya 464 00:20:29,670 --> 00:20:31,620 untuk menulis, menyatakan anda nama, dan, hello, Nik. 465 00:20:31,620 --> 00:20:37,210 Tetapi idea ini mudah untuk mesej yang berlalu, lulus input dan output menerima, 466 00:20:37,210 --> 00:20:40,430 betul-betul model yang kita akan mempunyai untuk walaupun fungsi yang paling kompleks. 467 00:20:40,430 --> 00:20:41,804 Jadi terima kasih banyak kepada anda kedua-duanya. 468 00:20:41,804 --> 00:20:43,730 Kami mempunyai tekanan indah bola sini untuk anda. 469 00:20:43,730 --> 00:20:48,890 Dan terima kasih kepada GetString kami dan sukarelawan printf sama. 470 00:20:48,890 --> 00:20:49,551 Terima kasih. 471 00:20:49,551 --> 00:20:50,050 Baiklah. 472 00:20:50,050 --> 00:20:50,966 Terima kasih kepada anda berdua. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Oleh itu, kita telah bercakap tentang setakat ini, kebanyakannya mengenai tali. 475 00:21:00,430 --> 00:21:06,550 Dan ternyata C yang boleh benar-benar memahami beberapa jenis data yang berbeza. 476 00:21:06,550 --> 00:21:08,860 Malah, mari kita yang melihat ini di sini. 477 00:21:08,860 --> 00:21:12,490 Jadi C, dan banyak bahasa, memahami perkara-perkara yang dipanggil aksara. 478 00:21:12,490 --> 00:21:16,852 Char A umumnya bait tunggal, atau lapan bit. 479 00:21:16,852 --> 00:21:19,810 Dan ia mewakili satu aksara, seperti huruf A, atau ibu negara 480 00:21:19,810 --> 00:21:21,990 Surat, atau huruf huruf kecil A, atau tanda seru, 481 00:21:21,990 --> 00:21:25,440 atau mana-mana watak yang anda boleh menaip pada papan kekunci anda, dan kadang-kadang lebih. 482 00:21:25,440 --> 00:21:26,795 Kami juga berlaku untuk melihat pelampung. 483 00:21:26,795 --> 00:21:31,160 Float A adalah, secara amnya, 32-bit nilai, atau empat bait 484 00:21:31,160 --> 00:21:33,660 kerana sekali lagi, satu bait adalah lapan bit. 485 00:21:33,660 --> 00:21:36,675 >> Jadi apungan adalah nilai mata terapung, sesuatu dengan titik perpuluhan. 486 00:21:36,675 --> 00:21:38,550 Dan sesungguhnya, itulah yang filem bercakap 487 00:21:38,550 --> 00:21:42,240 ketika mereka bercakap mengenai terapung mata yang, beberapa nombor tetap bit 488 00:21:42,240 --> 00:21:43,940 digunakan untuk mewakili nombor nyata. 489 00:21:43,940 --> 00:21:45,740 Tetapi ada juga perkara yang dipanggil beregu. 490 00:21:45,740 --> 00:21:47,860 Ini wujud di Jawa, jika anda telah mengambil APCS, 491 00:21:47,860 --> 00:21:51,540 dan dua, kerana nama itu bersyukur mencadangkan, adalah dua kali lebih besar sebagai apungan. 492 00:21:51,540 --> 00:21:54,540 Ia masih nombor nyata, ia hanya mempunyai lebih bit 493 00:21:54,540 --> 00:21:58,390 yang boleh digunakan untuk menjadi yang lebih tepat, atau untuk menyimpan nombor yang lebih besar. 494 00:21:58,390 --> 00:21:58,890 int mudah. 495 00:21:58,890 --> 00:22:00,181 Kita bercakap tentang masa lalu. 496 00:22:00,181 --> 00:22:01,160 Ia hanya integer. 497 00:22:01,160 --> 00:22:03,980 Dan ia biasanya 32 bit, atau empat bait. 498 00:22:03,980 --> 00:22:07,850 >> Dan sebagainya, jika anda mempunyai, mari kita lihat sekarang, 32 bits-- dan kita melakukan ini pada minggu 0, 499 00:22:07,850 --> 00:22:10,820 pernah jadi briefly-- jika anda mempunyai 32 bit, apa yang paling besar 500 00:22:10,820 --> 00:22:13,580 nbr boleh mewakili sebagai integer? 501 00:22:13,580 --> 00:22:16,080 Memberikan atau mengambil? 502 00:22:16,080 --> 00:22:18,380 Ia seperti 4 bilion, dan itu hanya jika kami 503 00:22:18,380 --> 00:22:20,690 mewakili nombor positif sahaja. 504 00:22:20,690 --> 00:22:23,930 Jika anda mempunyai 32 bit, dan anda mahu mewakili nombor negatif juga, 505 00:22:23,930 --> 00:22:27,100 rangkaian anda adalah, pada dasarnya, negatif 2 bilion kepada positif 2 bilion. 506 00:22:27,100 --> 00:22:29,250 Tetapi secara amnya, kita akan bermula pada 0 pergi sehingga 4 bilion. 507 00:22:29,250 --> 00:22:32,400 >> Anda tidak perlu tahu dengan tepat, tetapi kita boleh melihat ini, sebenarnya, jika saya hanya 508 00:22:32,400 --> 00:22:36,400 membuka kalkulator sedikit di sini. 509 00:22:36,400 --> 00:22:41,070 Yang boleh saya lakukan 2 32, dan itulah berapa besar, 510 00:22:41,070 --> 00:22:43,190 berapa banyak nilai yang anda boleh mewakili, dengan 32 bit. 511 00:22:43,190 --> 00:22:44,442 Dan ia adalah kira-kira 4 bilion. 512 00:22:44,442 --> 00:22:46,900 Oleh itu, kita akan terus melihat jumlah itu di beberapa tempat yang berbeza. 513 00:22:46,900 --> 00:22:48,890 Tetapi jika anda perlu lagi nombor daripada itu, 514 00:22:48,890 --> 00:22:51,670 ternyata ada yang sesuatu yang dinamakan yang panjang panjang. 515 00:22:51,670 --> 00:22:54,005 Dan yang panjang panjang adalah biasanya 64 bit, yang 516 00:22:54,005 --> 00:22:56,380 bermakna ia adalah suatu perintah magnitud lebih besar daripada int. 517 00:22:56,380 --> 00:22:59,510 >> Oleh itu, saya tidak dapat menyebut terbesar nombor yang anda boleh mewakili, 518 00:22:59,510 --> 00:23:01,340 tetapi ia adalah ketara lebih besar. 519 00:23:01,340 --> 00:23:05,190 Sekarang sebagai diketepikan, sejarah, jika int adalah 32 bit, 520 00:23:05,190 --> 00:23:12,780 dan yang panjang panjang adalah 64 bit, bagaimana besar adalah yang lama, tidak lama lama? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Anda akan berfikir ia lebih lama daripada int tetapi mungkin kurang panjang daripada yang panjang panjang, 523 00:23:20,330 --> 00:23:21,400 tetapi ia sebenarnya bergantung. 524 00:23:21,400 --> 00:23:23,400 >> Dan maka ia ternyata satu daripada kekecewaan juga, 525 00:23:23,400 --> 00:23:26,830 dengan menulis kod pada sistem tertentu, adalah bahawa tidak semua jenis data 526 00:23:26,830 --> 00:23:28,440 mempunyai nilai-nilai yang telah ditetapkan. 527 00:23:28,440 --> 00:23:29,771 Kadang-kadang ia banyak bit ini. 528 00:23:29,771 --> 00:23:31,020 Kadang-kadang ia adalah bahawa bit banyak. 529 00:23:31,020 --> 00:23:32,750 Jadi, anda sebenarnya perlu tahu, kadang-kadang, apa perkakasan 530 00:23:32,750 --> 00:23:34,083 anda menjalankan perisian anda. 531 00:23:34,083 --> 00:23:36,960 Syukurlah, bahasa lain dan jenis data yang lain yang kini wujud, 532 00:23:36,960 --> 00:23:38,400 membolehkan anda untuk menjadi lebih tepat. 533 00:23:38,400 --> 00:23:41,220 Nah, kita lihat tali, dan kami melihat bool, juga, 534 00:23:41,220 --> 00:23:43,960 tetapi ternyata mereka yang datang hanya dengan perpustakaan CS50. 535 00:23:43,960 --> 00:23:46,240 Jadi mereka tidak dibina ke dalam C. Mereka sebaliknya, 536 00:23:46,240 --> 00:23:49,340 datang dalam fail yang dipanggil CS50.h, yang kita akan akhirnya 537 00:23:49,340 --> 00:23:51,831 mengupas kembali lapisan. 538 00:23:51,831 --> 00:23:53,830 Tetapi buat masa ini, mereka hanya jenis data tambahan. 539 00:23:53,830 --> 00:23:57,060 Bool A adalah benar atau palsu, dan tali adalah jujukan aksara, 540 00:23:57,060 --> 00:23:57,970 seperti perkataan. 541 00:23:57,970 --> 00:24:01,690 Sekarang printf, kita telah melihat, mempunyai ruang letak,% s adalah satu. 542 00:24:01,690 --> 00:24:05,430 Dan anda mungkin boleh, kini, membuat kesimpulan daripada contoh-contoh lain, bagaimana 543 00:24:05,430 --> 00:24:07,720 anda boleh mempunyai pemegang tempat yang untuk jenis data yang berbeza. 544 00:24:07,720 --> 00:24:11,150 Sebagai contoh, mengambil tekaan, jika anda mahu mencetak char tunggal menggunakan 545 00:24:11,150 --> 00:24:15,270 printf, pemegang tempat itu mungkin% c. 546 00:24:15,270 --> 00:24:19,650 Dan jika anda mahu untuk mencetak satu integer dengan pemegang tempat,% i. 547 00:24:19,650 --> 00:24:25,150 % lld adalah nilai perpuluhan yang lama, tetapi lama lama, supaya peta untuk itu. 548 00:24:25,150 --> 00:24:28,640 Kemudian% f untuk terapung nilai mata atau dua, 549 00:24:28,640 --> 00:24:31,270 jadi kadang-kadang mereka semula digunakan dalam konteks yang berbeza. 550 00:24:31,270 --> 00:24:33,350 Oleh itu, kita akan melihat dan menggunakan beberapa orang-orang dari masa ke masa. 551 00:24:33,350 --> 00:24:36,420 Dan printf dan fungsi lain juga urutan melarikan diri menyokong orang lain ', 552 00:24:36,420 --> 00:24:38,080 dan kadang-kadang, ini adalah perlu. 553 00:24:38,080 --> 00:24:39,770 Jadi garis sendeng terbalik n adalah barisan baru. 554 00:24:39,770 --> 00:24:42,886 Backslash t, adakah sesiapa mahu mengambil tikaman? 555 00:24:42,886 --> 00:24:43,760 PENONTON AHLI: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J MALAN: Tab. 557 00:24:44,551 --> 00:24:46,810 Jadi, jika anda benar-benar mahu mencetak tab, tidak 558 00:24:46,810 --> 00:24:49,940 nombor tetap ruangan tetapi yang sebenar watak tab, anda tidak memukul anda, 559 00:24:49,940 --> 00:24:53,490 tab, kunci pada papan kekunci, secara amnya, anda benar-benar melakukan backslash t. 560 00:24:53,490 --> 00:24:57,750 Backslash petikan berganda, mengapa saya pernah mahu itu? 561 00:24:57,750 --> 00:24:58,250 Betul? 562 00:24:58,250 --> 00:25:00,417 Mengapa saya tidak boleh hanya menaip petikan berganda pada papan kekunci saya? 563 00:25:00,417 --> 00:25:02,124 PENONTON AHLI: Kerana, jika tidak, ia 564 00:25:02,124 --> 00:25:04,830 akan rasa ia akhirnya daripada suka cetak anda [? teks. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J MALAN: Tepat sekali. 566 00:25:05,420 --> 00:25:07,211 Ingat, dengan kami contoh printf, apabila kita 567 00:25:07,211 --> 00:25:10,075 telah lulus untuk printf dalam input, di sebelah kiri bahawa rentetan input 568 00:25:10,075 --> 00:25:12,950 dan di sebelah kanan input yang musim bunga, sudah tentu, adalah petikan berganda. 569 00:25:12,950 --> 00:25:16,270 Jika input anda sendiri mempunyai dua quote di tengah-tengah itu, 570 00:25:16,270 --> 00:25:18,920 komputer mungkin berpotensi keliru, untuk, 571 00:25:18,920 --> 00:25:20,760 adakah petikan berganda ini tergolong di tengah-tengah? 572 00:25:20,760 --> 00:25:22,150 Adakah ia tergolong dengan yang kiri itu? 573 00:25:22,150 --> 00:25:23,566 Adakah ia termasuk golongan yang betul? 574 00:25:23,566 --> 00:25:26,780 Dan sebagainya, jika anda mahu untuk menjadikannya super jelas, anda melakukan Backslash petikan berganda, 575 00:25:26,780 --> 00:25:30,480 supaya ia melarikan diri, jadi untuk bercakap, dan ia tidak conflated untuk sesuatu yang lain. 576 00:25:30,480 --> 00:25:34,400 Dan ada beberapa yang lain di sini, r garis sendeng terbalik, petikan tunggal, 0, 577 00:25:34,400 --> 00:25:36,510 supaya kita lihat dari masa ke masa, juga. 578 00:25:36,510 --> 00:25:37,760 Dan sekarang, bagaimana pula dengan fungsi? 579 00:25:37,760 --> 00:25:41,630 >> Jadi tindakan yang boleh kita ambil setakat ini dalam bahasa ini, C, baik, yang kita lihat, 580 00:25:41,630 --> 00:25:44,320 printf, sudah tentu, dan semua yang lain pada skrin, 581 00:25:44,320 --> 00:25:47,140 di sini, bahawa kami akan gunakan untuk beberapa minggu pertama kursus ini sahaja, 582 00:25:47,140 --> 00:25:48,485 datang apabila perpustakaan CS50. 583 00:25:48,485 --> 00:25:51,850 Dan mereka menjadikan ia lebih mudah, dalam C, untuk benar-benar mendapatkan input pengguna. 584 00:25:51,850 --> 00:25:54,200 Ia ternyata bahawa dalam C, dan terus-terang dalam bahasa sedikit, 585 00:25:54,200 --> 00:25:57,450 ia sakit sebenar di leher untuk melakukan sesuatu yang mudah, seperti segera pengguna 586 00:25:57,450 --> 00:26:01,310 untuk papan kekunci, untuk input masing-masing. 587 00:26:01,310 --> 00:26:03,240 Dan supaya fungsi-fungsi ini adalah lebih mudah. 588 00:26:03,240 --> 00:26:05,472 >> Dan ia juga mempunyai ralat memeriksa seluruh, 589 00:26:05,472 --> 00:26:07,180 supaya, apabila anda ingat pada hari Rabu, kita 590 00:26:07,180 --> 00:26:09,740 melihat, mencuba semula, amaran, apabila saya tidak bekerjasama, 591 00:26:09,740 --> 00:26:11,700 dan saya menaip perkataan, dan bukannya nombor? 592 00:26:11,700 --> 00:26:15,402 Kami telah melakukan mengangkat berat awal pada memastikan pengguna bekerjasama. 593 00:26:15,402 --> 00:26:17,860 Tetapi ini adalah hanya latihan roda yang kami akan akhirnya, 594 00:26:17,860 --> 00:26:19,640 dan cepat, mengambil kira. 595 00:26:19,640 --> 00:26:22,630 >> Jadi untuk recap, maka, mari kita lihat yang cepat, 596 00:26:22,630 --> 00:26:26,620 sama seperti yang kita lakukan dengan Awal, di beberapa konstruk berkanun dalam C. 597 00:26:26,620 --> 00:26:28,580 Ini bertujuan untuk, jenis daripada, menjadi lawatan badai, 598 00:26:28,580 --> 00:26:30,990 hanya supaya anda mempunyai rujukan dan bahawa anda telah melihat perkara yang pada mulanya. 599 00:26:30,990 --> 00:26:34,100 Tetapi kemudian kita akan melihat pengekodan yang sebenar menggunakan beberapa blok-blok bangunan. 600 00:26:34,100 --> 00:26:36,710 Begitu banyak seperti di Awal, apabila kita telah penyata suka, 601 00:26:36,710 --> 00:26:41,570 katakan atau, tunggu, dalam C, kita mempunyai fungsi juga, seperti printf. 602 00:26:41,570 --> 00:26:45,350 >> Jika kita ingin menyatakan keadaan dalam C, ia adalah sama, di hadapan Allah, 603 00:26:45,350 --> 00:26:47,840 untuk sekeping teka-teki yang kelihatan seperti ini dalam Scratch. 604 00:26:47,840 --> 00:26:49,850 Tetapi sebaliknya, kita betul-betul hanya menulis, jika. 605 00:26:49,850 --> 00:26:51,830 Dan kemudian, dalam kurungan, kita meletakkan syarat, 606 00:26:51,830 --> 00:26:54,807 di mana keadaan itu adalah apa yang kita akan memanggil, sekali lagi, ungkapan boolean. 607 00:26:54,807 --> 00:26:56,390 Dan sekali lagi, ini adalah jenis kod pseudo. 608 00:26:56,390 --> 00:26:58,830 Dan, sebenarnya, // adalah komen. 609 00:26:58,830 --> 00:27:00,550 Ia hanya perkataan Bahasa Inggeris kepada diri saya sendiri. 610 00:27:00,550 --> 00:27:03,000 Tetapi ini adalah umum struktur, jika, keadaan. 611 00:27:03,000 --> 00:27:05,220 Tetapi kita akan melihat konkrit contoh dalam hanya seketika. 612 00:27:05,220 --> 00:27:07,960 >> Jika anda ingin mempunyai dua hala garpu di jalan raya, 613 00:27:07,960 --> 00:27:11,740 sama seperti yang kita lakukan dengan sukarela kami di Wednesday, anda boleh mempunyai, lain jika. 614 00:27:11,740 --> 00:27:16,020 Dan jika anda mahu mempunyai ketiga dan keadaan akhir, atau keadaan lalai, 615 00:27:16,020 --> 00:27:19,006 anda boleh mempunyai hanya satu blok yang lain, di sana. 616 00:27:19,006 --> 00:27:21,880 Begitu juga, dengan ungkapan-ungkapan boolean, anda boleh, dan, mereka bersama-sama. 617 00:27:21,880 --> 00:27:24,296 Dan kita melihat pada hari Rabu, yang ia bukan satu Ampersand tunggal, 618 00:27:24,296 --> 00:27:28,220 ia dua, atas alasan peringkat rendah yang akhirnya kita akan melihat dan bermain dengan. 619 00:27:28,220 --> 00:27:30,410 Or-ing perkara bersama-sama ialah 2 bar menegak. 620 00:27:30,410 --> 00:27:32,240 Pada papan kekunci Amerika Syarikat, ini umumnya kunci 621 00:27:32,240 --> 00:27:35,730 dengan kekunci Shift di atas Masukkan kunci atau Kembali utama. 622 00:27:35,730 --> 00:27:38,620 >> Kemudian ada perkara-perkara yang kami akan menggunakan mungkin sekali atau dua kali. 623 00:27:38,620 --> 00:27:42,570 Mereka berfungsi bersamaan dengan apa yang anda boleh lakukan dengan, jika, lain jika, 624 00:27:42,570 --> 00:27:44,950 lain jika pun, membina, tetapi mereka dipanggil suis. 625 00:27:44,950 --> 00:27:48,020 Mereka kelihatan sangat berbeza, tetapi kita akan melihat dalam beberapa kod pengedaran kami, 626 00:27:48,020 --> 00:27:51,890 untuk satu set masalah masa depan, kemungkinan besar, bahawa itu kadang-kadang hanya yang lebih cantik 627 00:27:51,890 --> 00:27:54,060 cara untuk menyatakan keseluruhan sekumpulan syarat, 628 00:27:54,060 --> 00:27:57,590 tanpa banyak pendakap kerinting dan banyak kurungan dan lekukan. 629 00:27:57,590 --> 00:28:01,910 Tetapi mereka memberi kita tidak lebih kuasa daripada kita sudah. 630 00:28:01,910 --> 00:28:02,550 Dan kini gelung. 631 00:28:02,550 --> 00:28:05,020 Dan yang satu ini, kita akan melihat di sedikit lebih perlahan. 632 00:28:05,020 --> 00:28:08,470 Tetapi, kita akan mula menggunakan, terutama bagi mereka yang sudah biasa. 633 00:28:08,470 --> 00:28:13,830 Ini adalah cara yang kanun, jika amat cara yang sukar difahami, untuk menulis gelung dalam C. 634 00:28:13,830 --> 00:28:15,896 >> Sekarang gelung dalam Scratch adalah agak mudah. 635 00:28:15,896 --> 00:28:17,020 Anda mempunyai, selama-lamanya, blok. 636 00:28:17,020 --> 00:28:19,760 Anda mempunyai, ulang, blok dengan hanya sebilangan anda perlu menaip. 637 00:28:19,760 --> 00:28:22,220 Dan dengan itu, untuk gelung, anda boleh melaksanakan kedua-dua idea-idea, 638 00:28:22,220 --> 00:28:23,595 tetapi ia sedikit lebih teknikal. 639 00:28:23,595 --> 00:28:25,994 Tetapi terus-terang, ia juga agak mudah. 640 00:28:25,994 --> 00:28:28,160 Sebaik sahaja anda tahu perintah operasi, anda benar-benar 641 00:28:28,160 --> 00:28:30,910 hanya akan pasangkan nilai dan memberitahu komputer apa yang perlu dilakukan. 642 00:28:30,910 --> 00:28:32,800 Jadi di sini adalah satu contoh. 643 00:28:32,800 --> 00:28:38,040 Ini adalah gelung itu, agak semata-mata, yang diambil kira dari satu nombor ke atas 644 00:28:38,040 --> 00:28:40,187 melalui satu lagi. 645 00:28:40,187 --> 00:28:42,020 Dan hanya dengan mengerling pada itu, walaupun anda mempunyai 646 00:28:42,020 --> 00:28:44,660 pengalaman terlebih dahulu dengan bahasa ini, apa nombor 647 00:28:44,660 --> 00:28:46,920 ia mungkin mula mengira pada? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 Dan saya meneka itu kerana anda melihat bahawa terdapat satu int dan i, 650 00:28:50,240 --> 00:28:51,073 yang merupakan pembolehubah. 651 00:28:51,073 --> 00:28:52,390 Ia dimulakan pada 0. 652 00:28:52,390 --> 00:28:55,670 >> Dan kemudian, ia kelihatan seperti kita lulus printf, nilai. 653 00:28:55,670 --> 00:28:58,000 Dan, sebenarnya, saya membuat kesilapan menaip sedikit di sini. 654 00:28:58,000 --> 00:28:59,850 Tetapi itu mudah tetap. 655 00:28:59,850 --> 00:29:02,390 Biar saya masukkan, saya di sini. 656 00:29:02,390 --> 00:29:06,150 Kami kini mempunyai printf makhluk diluluskan bahawa nilai pemegang tempat. 657 00:29:06,150 --> 00:29:08,299 Dan apa yang akan mengira sehingga melalui? 658 00:29:08,299 --> 00:29:08,840 PENONTON: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 DAVID J MALAN: 49. 662 00:29:10,910 --> 00:29:13,340 Jadi 50, pada pandangan pertama, seolah-olah betul. 663 00:29:13,340 --> 00:29:16,990 Tetapi itu, ternyata, akan menjadi keadaan kita yang kita terus mendaftar. 664 00:29:16,990 --> 00:29:21,740 Dan kita akan berhenti sebaik sahaja i tidak lagi kurang daripada 50. 665 00:29:21,740 --> 00:29:24,920 Jadi gelung ini, sebaliknya, sekiranya melaksanakan, selagi i adalah kurang daripada 50. 666 00:29:24,920 --> 00:29:28,891 Tetapi sebaik sahaja ia menjadi 50, atau 51, atau lebih teruk lagi, ia perlu berhenti secara automatik. 667 00:29:28,891 --> 00:29:29,390 Baiklah. 668 00:29:29,390 --> 00:29:31,200 >> Jadi apa yang sebenarnya berlaku di sini? 669 00:29:31,200 --> 00:29:33,160 Jadi ini adalah perintah operasi untuk gelung. 670 00:29:33,160 --> 00:29:35,440 Satu, anda mempunyai apa yang dikenali sebagai pengawalan. 671 00:29:35,440 --> 00:29:38,264 Ini sebahagian diserlahkan kuning kod dilaksanakan pertama, 672 00:29:38,264 --> 00:29:40,930 dan ia mempunyai kesan bahawa, setiap Rabu, anda mungkin bayangkan. 673 00:29:40,930 --> 00:29:45,500 Ia mencipta pembolehubah yang dipanggil i dan ia Kedai dalam pembolehubah yang nilai 0. 674 00:29:45,500 --> 00:29:47,560 Jadi saya adalah 0 pada ketika ini dalam cerita. 675 00:29:47,560 --> 00:29:49,680 >> Perkara seterusnya yang berlaku dalam membina ini, 676 00:29:49,680 --> 00:29:51,540 adalah bahawa keadaan mendapat diperiksa. 677 00:29:51,540 --> 00:29:54,325 Jadi saya menyemak dengan segera, i adalah kurang daripada 50? 678 00:29:54,325 --> 00:29:57,700 Dan sudah tentu, jawapannya buat masa ini adalah, sesungguhnya, ya. 679 00:29:57,700 --> 00:30:00,710 Ya, kerana saya adalah 0, dan itu pasti kurang daripada 50. 680 00:30:00,710 --> 00:30:03,866 Kemudian apa yang berlaku, adalah bahawa ini baris kod mendapat dilaksanakan. 681 00:30:03,866 --> 00:30:06,740 Dan sebenarnya, jika ada beberapa baris kod dalam orang-orang pendakap kerinting, 682 00:30:06,740 --> 00:30:09,020 mereka semua mendapatkan dilaksanakan satu demi satu. 683 00:30:09,020 --> 00:30:11,450 >> Dan berkuat kuasa di sini, adalah nampaknya, untuk mencetak 684 00:30:11,450 --> 00:30:15,365 jumlah i, yang akan 0, dan kemudian 1, dan kemudian 2. 685 00:30:15,365 --> 00:30:15,865 Tapi kenapa? 686 00:30:15,865 --> 00:30:17,410 Mengapa ia mendapatkan incremented? 687 00:30:17,410 --> 00:30:20,680 Nah, perkara yang keempat yang yang berlaku ialah bahawa sintaks ini 688 00:30:20,680 --> 00:30:22,610 mendapat dilaksanakan, selepas koma bernoktah. 689 00:30:22,610 --> 00:30:27,506 i ++ adalah cara trengkas untuk mengatakan; mengambil nilai i, dan tambah 1 kepadanya; 690 00:30:27,506 --> 00:30:30,380 dan kemudian ada peluang lagi, tambah 1 kepadanya; dan masa yang akan datang di sekitar, 691 00:30:30,380 --> 00:30:31,330 tambah 1 kepadanya. 692 00:30:31,330 --> 00:30:33,640 >> Jadi, jika kita terus pergi, apa yang akan berlaku 693 00:30:33,640 --> 00:30:35,890 seterusnya saya tidak akan memulakan i pernah lagi. 694 00:30:35,890 --> 00:30:38,290 Jika saya terus Memulakan i kepada 0, contoh ini 695 00:30:38,290 --> 00:30:41,110 tidak akan berakhir kerana saya akan terjebak pada 0. 696 00:30:41,110 --> 00:30:43,870 Tetapi apa yang akan berlaku adalah bahawa keadaan akan diperiksa, 697 00:30:43,870 --> 00:30:54,280 baris kod akan dapat dilaksanakan, i akan incremented, 698 00:30:54,280 --> 00:30:56,970 keadaan akan diperiksa, kod akan mendapat dilaksanakan. 699 00:30:56,970 --> 00:30:59,790 Dan ia disimpan berbasikal lagi, dan sekali lagi, dan sekali lagi, 700 00:30:59,790 --> 00:31:03,340 sehingga i ++ mendorong nilai 50. 701 00:31:03,340 --> 00:31:05,870 >> Keadaan ini kemudian berkata, 50 kurang daripada 50? 702 00:31:05,870 --> 00:31:09,360 Jawapannya, sudah tentu, adalah tidak, dan supaya seluruh kod berhenti melaksanakan. 703 00:31:09,360 --> 00:31:13,020 Dan jika anda mempunyai kod yang lebih pada skrin turun di bawah, itulah yang berlaku seterusnya. 704 00:31:13,020 --> 00:31:17,530 Ia timbul daripada ini pendakap kerinting dan terus mencetak lebih banyak selepas itu. 705 00:31:17,530 --> 00:31:20,470 >> Jadi jenaka sekarang, dari Foxtrot, yang anda akan mungkin kini memahami. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Ia sentiasa lucu. 708 00:31:31,560 --> 00:31:34,110 Ia seperti chuckles jenis meresap, 709 00:31:34,110 --> 00:31:38,370 dan kemudian anda sedar anda tidak perlu menjadi ketawa pada jenaka seperti ini. 710 00:31:38,370 --> 00:31:41,160 Tetapi terdapat beberapa bawa pulang sini, pedagogically juga. 711 00:31:41,160 --> 00:31:43,577 Jadi ternyata bahawa saya hilang sekeping sintaksis, 712 00:31:43,577 --> 00:31:45,410 atau yang Foxtrot hilang sekeping sintaks sini. 713 00:31:45,410 --> 00:31:48,076 Apa yang hilang, bahawa kita mempunyai dalam setiap contoh yang lain, setakat ini? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Return, adalah di sana, jadi itulah sesuatu yang lain, 716 00:31:53,390 --> 00:31:54,440 yang kita akan kembali kepada tidak lama lagi. 717 00:31:54,440 --> 00:31:55,398 Apa yang hilang, walaupun? 718 00:31:55,398 --> 00:31:55,908 Yeah. 719 00:31:55,908 --> 00:31:58,150 >> PENONTON AHLI: The pengawalan daripada [didengar]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J MALAN: OK. 721 00:31:58,470 --> 00:31:58,980 Jadi yeah. 722 00:31:58,980 --> 00:32:03,210 Jadi sebenarnya, ini is-- Nah, dan kiraan adalah dimulakan 723 00:32:03,210 --> 00:32:05,470 sehingga di atas, atau sebaliknya, sehingga diisytiharkan di atas. 724 00:32:05,470 --> 00:32:06,960 Jadi ini adalah satu lagi cara untuk melakukannya. 725 00:32:06,960 --> 00:32:08,685 Tetapi tidak dalam satu baris itu sah walaupun. 726 00:32:08,685 --> 00:32:09,310 Bagaimana pula di sini? 727 00:32:09,310 --> 00:32:10,196 >> PENONTON AHLI: Adakah pendakap kerinting? 728 00:32:10,196 --> 00:32:10,640 >> DAVID MALAN J: Ya. 729 00:32:10,640 --> 00:32:12,080 Jadi pendakap kerinting hilang. 730 00:32:12,080 --> 00:32:15,495 Tetapi kod ini, maksud saya, untuk kredit mereka, sebenarnya, sintaksis sah. 731 00:32:15,495 --> 00:32:17,610 Sebaliknya, anda tidak memerlukan pendakap kerinting 732 00:32:17,610 --> 00:32:21,691 jika anda hanya mempunyai satu baris kod yang anda ingin melaksanakan dalam gelung. 733 00:32:21,691 --> 00:32:24,190 Sekarang kita sentiasa, dalam kelas dan di semua kod pengedaran kami, 734 00:32:24,190 --> 00:32:26,730 termasuk pendakap kerinting anyway, hanya demi kejelasan ini. 735 00:32:26,730 --> 00:32:29,010 Tetapi menyedari bahawa di dalam buku teks dan contoh dalam talian, 736 00:32:29,010 --> 00:32:31,300 anda dengan baik boleh melihat kerinting pendakap hilang ketika. 737 00:32:31,300 --> 00:32:34,850 Dan itu OK, jika apa yang anda telah dilekukan dan bertujuan 738 00:32:34,850 --> 00:32:38,650 hanya satu baris kod, dan tidak beberapa baris kod, berpotensi. 739 00:32:38,650 --> 00:32:39,150 Baiklah. 740 00:32:39,150 --> 00:32:44,500 Jadi berkaitan dengan isu ketakpersisan, adalah isu limpahan, 741 00:32:44,500 --> 00:32:48,560 dalam erti kata bahawa, begitu juga, jangan integer mempunyai had kepada mereka 742 00:32:48,560 --> 00:32:49,970 seperti mata yang terapung? 743 00:32:49,970 --> 00:32:53,120 Dalam dunia titik terapung nilai, kita hanya boleh menjadi begitu tepat, 744 00:32:53,120 --> 00:32:55,710 selepas itu, kadang-kadang perkara-perkara buruk boleh berlaku, 745 00:32:55,710 --> 00:32:57,760 dan program-program kami boleh menjadi kereta dan kesilapan. 746 00:32:57,760 --> 00:33:00,050 Kini dengan bilangan bulat, anda boleh menghadapi masalah. 747 00:33:00,050 --> 00:33:03,820 Sekarang integer tidak mempunyai titik perpuluhan atau nombor selepas itu. 748 00:33:03,820 --> 00:33:07,130 Ia hanya satu nombor asli, biasanya. 749 00:33:07,130 --> 00:33:09,430 Jadi apa yang boleh berlaku dengan int? 750 00:33:09,430 --> 00:33:12,210 Jika saya menggunakan int untuk mengira, apa yang boleh berlaku? 751 00:33:12,210 --> 00:33:13,230 Nampaknya banyak yang lebih mudah. 752 00:33:13,230 --> 00:33:13,873 Yeah. 753 00:33:13,873 --> 00:33:16,240 >> PENONTON AHLI: Jika bilangan mendapat [didengar] 754 00:33:16,240 --> 00:33:17,073 >> DAVID MALAN J: Ya. 755 00:33:17,073 --> 00:33:20,820 Bagaimana jika anda mengira begitu tinggi, bahawa anda tidak dapat meluahkan bahawa jumlah yang sangat besar. 756 00:33:20,820 --> 00:33:21,320 Betul? 757 00:33:21,320 --> 00:33:23,910 Pada satu ketika, anda akan melebihi sempadan 758 00:33:23,910 --> 00:33:27,077 daripada nilai 32-bit atau nilai 64-bit. 759 00:33:27,077 --> 00:33:29,410 Kini sekali lagi, saya tidak pasti berapa mengucapkan nilai 64-bit, 760 00:33:29,410 --> 00:33:32,230 tetapi saya tahu dengan integer 32-bit, nilai yang paling besar ia boleh, 761 00:33:32,230 --> 00:33:35,490 jika ia hanya positif nilai, adalah kira-kira 4 bilion. 762 00:33:35,490 --> 00:33:39,000 Jadi, jika saya cuba untuk mengira hingga 5 bilion, sesuatu yang akan berlaku. 763 00:33:39,000 --> 00:33:41,050 Tetapi mari kita lihat apa, sebenarnya, boleh berlaku. 764 00:33:41,050 --> 00:33:44,570 Dalam dunia integer limpahan, di mana anda, dari satu segi, 765 00:33:44,570 --> 00:33:48,270 melimpah kapasiti yang integer, apa yang mungkin berlaku? 766 00:33:48,270 --> 00:33:51,190 >> Jadi di sini adalah beberapa binari, ia adalah throwback kepada 0. 767 00:33:51,190 --> 00:33:54,630 Itu semua 1, dan ruang letak di sana, adalah kuasa 2, 768 00:33:54,630 --> 00:33:55,980 jadi ini adalah binari. 769 00:33:55,980 --> 00:33:59,416 Jadi ini adalah 8, 1 bit pada skrin. 770 00:33:59,416 --> 00:34:01,290 Dan jika anda masih ingat atau anda dengan cepat matematik, 771 00:34:01,290 --> 00:34:06,074 apa nilai yang diwakili di sini dengan lapan 1 bit? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 Dan jika anda tidak pasti matematik, anda boleh melakukannya keluar. 774 00:34:09,260 --> 00:34:10,550 Atau anda boleh hanya jenis sebab melaluinya, 775 00:34:10,550 --> 00:34:12,633 tunggu satu minit, jika saya mewakili nilai 8 bit, 776 00:34:12,633 --> 00:34:17,750 dan saya telah mendapat 256 nilai yang mungkin, tetapi di mana yang pertama adalah 0, 777 00:34:17,750 --> 00:34:19,909 Saya hanya tahu bahawa terbesar akan menjadi 255, 778 00:34:19,909 --> 00:34:21,510 dan itulah yang satu ini mungkin. 779 00:34:21,510 --> 00:34:26,060 >> Jadi rasa saya cuba untuk menambah 1 kepada nilai ini. 780 00:34:26,060 --> 00:34:28,750 Apa yang akan anda lakukan dalam gred sekolah apabila menambah 1, dan ia 781 00:34:28,750 --> 00:34:31,139 tidak benar-benar sesuai kerana anda perlu membawa 1? 782 00:34:31,139 --> 00:34:34,380 Apakah bilangan ini akan untuk menjadi apabila anda menambah 1? 783 00:34:34,380 --> 00:34:37,030 Ia akan menjadi 0. 784 00:34:37,030 --> 00:34:37,530 Betul? 785 00:34:37,530 --> 00:34:41,139 Kerana jika anda mempunyai lebih banyak bits-- dan saya akan cuba untuk, jenis, taipkan ia di sini-- 786 00:34:41,139 --> 00:34:44,710 jika kita mempunyai lebih bit, apa yang kita boleh lakukan di sini adalah menambah 1, 787 00:34:44,710 --> 00:34:47,370 dan kemudian kita akan mendapatkan ini. 788 00:34:47,370 --> 00:34:48,739 Alamak. 789 00:34:48,739 --> 00:34:52,250 Kita akan mempunyai sedikit 1 sepanjang jalan di sini. 790 00:34:52,250 --> 00:34:55,530 >> Tetapi jika ini adalah yang terhad nilai, ia hanya 8 bit, 791 00:34:55,530 --> 00:34:57,480 dan itulah yang telah ditetapkan oleh komputer, 792 00:34:57,480 --> 00:34:59,370 yang 1 adalah berkesan tidak ada. 793 00:34:59,370 --> 00:35:00,980 Ia hanya jenis jatuh dari tebing. 794 00:35:00,980 --> 00:35:05,480 Dan jadi jika anda menambah 1-255, apa nilai yang anda nampaknya dapat? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 Dan sebagainya nombor tidak sengaja, dan mungkin, tidak sengaja, 797 00:35:09,700 --> 00:35:12,040 berakhir membungkus sekitar seperti ini. 798 00:35:12,040 --> 00:35:14,079 Jadi apa yang boleh menjadi implikasi ini? 799 00:35:14,079 --> 00:35:15,620 Well, ada beberapa perkara yang berbeza. 800 00:35:15,620 --> 00:35:18,751 Jadi salah, ia berakhir sehingga kelihatan seperti 0, tidak sengaja, 801 00:35:18,751 --> 00:35:20,750 tetapi anda boleh jenis melihat, walaupun dalam dunia sebenar, 802 00:35:20,750 --> 00:35:23,416 untuk lebih baik atau untuk lebih teruk, manifestasi idea ini had. 803 00:35:23,416 --> 00:35:26,630 Sebagai contoh, mana-mana yang pernah dimainkan Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 adakah sesiapa yang kebetulan tahu bilangan maksimum syiling 805 00:35:28,880 --> 00:35:32,032 anda boleh mengumpul dalam Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Ambil tekaan berdasarkan soalan memimpin hari ini. 807 00:35:35,640 --> 00:35:39,140 Ia lebih besar daripada 256 atau 255. 808 00:35:39,140 --> 00:35:40,330 Ia adalah 4 bilion. 809 00:35:40,330 --> 00:35:42,080 Jadi ternyata, dan ada beberapa dan kaum 810 00:35:42,080 --> 00:35:46,080 beberapa Googling mengesahkan night-- lalu telah mendapat 4000000000 syiling emas, 811 00:35:46,080 --> 00:35:47,730 atau barang kecil, di Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Walaupun nampaknya, ada cara untuk menipu permainan, 813 00:35:49,860 --> 00:35:53,222 ada bug atau ciri, yang membolehkan anda hanya terakru banyak dan banyak mata. 814 00:35:53,222 --> 00:35:54,930 Tetapi mungkin terbesar nilai, menurut 815 00:35:54,930 --> 00:35:58,360 untuk pukulan skrin ini seseorang yang saya didapati dalam talian, memang, 4 bilion. 816 00:35:58,360 --> 00:35:59,240 >> Sekarang mengapa? 817 00:35:59,240 --> 00:36:03,040 Ia adalah tepat 4 bilion, mungkin kerana ada orang yang cuba, 818 00:36:03,040 --> 00:36:05,500 yang menulis permainan ini, bahawa mereka boleh melakukan 4 bilion, 819 00:36:05,500 --> 00:36:07,340 sesuatu, sesuatu, sesuatu, seperti nilai saya meletakkan 820 00:36:07,340 --> 00:36:10,256 dengan kalkulator yang lebih awal, tetapi ia hanya sedikit bersih untuk manusia 821 00:36:10,256 --> 00:36:12,610 untuk mengatakan bilangan maksimum daripada coins-- atau kancing, 822 00:36:12,610 --> 00:36:14,860 kerana mereka memanggil mereka, kelak yang boleh mengumpul adalah 4 bilion. 823 00:36:14,860 --> 00:36:16,290 Dan sebagainya, mengapa ini? 824 00:36:16,290 --> 00:36:20,310 Bagaimana permainan LEGO melaksanakan kaunter 825 00:36:20,310 --> 00:36:23,420 yang yang mengesan daripada beberapa duit syiling yang anda ada? 826 00:36:23,420 --> 00:36:24,266 Mereka menggunakan apa? 827 00:36:24,266 --> 00:36:26,390 PENONTON AHLI: Ia berhenti mengira selepas 4 bilion. 828 00:36:26,390 --> 00:36:27,720 DAVID MALAN J: Ia berhenti mengira selepas 4 bilion, 829 00:36:27,720 --> 00:36:29,525 yang bermakna anda boleh membuat kesimpulan, sebagai seorang programmer, 830 00:36:29,525 --> 00:36:31,960 bahawa mereka mungkin menggunakan integer 32 bit. 831 00:36:31,960 --> 00:36:35,380 Seperti pengaturcara benar-benar hanya bertaip, int, kod masing-masing, 832 00:36:35,380 --> 00:36:39,620 dan itulah jenis pembolehubah yang mereka gunakan untuk menyimpan kod seseorang. 833 00:36:39,620 --> 00:36:42,230 Jadi ada manifestasi lain jenis-jenis had. 834 00:36:42,230 --> 00:36:45,063 >> Jadi saya tidak bermain game-- ini dan saya telah membaca di atas sejarah 835 00:36:45,063 --> 00:36:48,470 untuk mengesahkan sebagai much-- tetapi dalam Versi asal Tamadun, di mana 836 00:36:48,470 --> 00:36:53,240 anda nampaknya berinteraksi antara satu sama lain dan boleh berperang atau mempunyai keamanan, 837 00:36:53,240 --> 00:36:56,590 Gandhi sepatutnya menjadi salah satu watak yang paling aman, kerana saya 838 00:36:56,590 --> 00:36:59,280 memahaminya, dalam yang pertama versi Tamadun. 839 00:36:59,280 --> 00:37:03,250 Dan sebenarnya, pada skala 1 hingga 10, agresif beliau adalah hanya 1. 840 00:37:03,250 --> 00:37:05,620 Jadi yang begitu lemah-lembut, agresif, nampaknya. 841 00:37:05,620 --> 00:37:11,590 >> Tetapi pada satu ketika, anda boleh nampaknya memasang demokrasi dalam geografi anda. 842 00:37:11,590 --> 00:37:14,900 Dan jika anda memasang demokrasi ke dalam versi permainan, 843 00:37:14,900 --> 00:37:17,320 maka tahap pencerobohan anda turun. 844 00:37:17,320 --> 00:37:18,460 Ia adalah satu perkara yang baik. 845 00:37:18,460 --> 00:37:20,890 Orang lebih tenang nampaknya, dalam keadaan itu. 846 00:37:20,890 --> 00:37:23,190 Tetapi nampaknya, seseorang yang melakukan tidak mempunyai, jika, keadaan 847 00:37:23,190 --> 00:37:24,780 dalam versi asal kod. 848 00:37:24,780 --> 00:37:30,650 >> Jadi peringkat pencerobohan Gandhi pergi dari positif 1, tolak 2, kepada negatif 1, 849 00:37:30,650 --> 00:37:33,840 tetapi permainan tidak memahami nombor negatif. 850 00:37:33,840 --> 00:37:38,680 Jadi apa yang berlaku adalah pencerobohan Gandhi tahap pergi dari 1, kepada 0, dengan -1, 851 00:37:38,680 --> 00:37:40,900 yang mempunyai kesan membungkus sekitar untuk menjadi 852 00:37:40,900 --> 00:37:44,690 watak yang paling agresif dalam permainan, pada nilai 255, 853 00:37:44,690 --> 00:37:46,630 pada skala 1 hingga 10. 854 00:37:46,630 --> 00:37:49,887 Dan sejak itu, telah ada lebih jelmaan permainan ini, 855 00:37:49,887 --> 00:37:51,720 dan mereka telah disimpan sebagai sejenis Paskah telur, 856 00:37:51,720 --> 00:37:53,870 bahawa Gandhi nampaknya begitu teruk agresif. 857 00:37:53,870 --> 00:37:56,740 Tetapi ia adalah hasil daripada kesilapan pengaturcaraan sangat mudah 858 00:37:56,740 --> 00:37:58,630 dalam versi awal permainan. 859 00:37:58,630 --> 00:38:02,860 >> Sekarang, lebih membimbangkan, lebih baru-baru ini, Boeing 787 860 00:38:02,860 --> 00:38:05,720 telah didokumenkan sebagai mempunyai bug, bukan jenis peranti 861 00:38:05,720 --> 00:38:07,340 anda terutamanya mahu mempunyai bug. 862 00:38:07,340 --> 00:38:10,130 Dan tanda-tanda, bahawa saya akan membaca sini, dari talian artikel, 863 00:38:10,130 --> 00:38:13,840 adalah ini, model 787 kapal terbang yang telah berkuasa secara berterusan 864 00:38:13,840 --> 00:38:18,030 untuk 248 hari boleh kehilangan semua arus, AC, 865 00:38:18,030 --> 00:38:20,850 kuasa elektrik, kerana unit kawalan penjana, 866 00:38:20,850 --> 00:38:23,330 GCUs, pada masa yang sama pergi ke mod pasti selamat. 867 00:38:23,330 --> 00:38:26,790 Jadi ini adalah satu amaran yang dikeluarkan apabila masalah ini telah ditemui. 868 00:38:26,790 --> 00:38:28,750 Keadaan ini disebabkan oleh kaunter perisian, 869 00:38:28,750 --> 00:38:32,230 dalaman kepada GCUs, jadi integer atau berubah-ubah, 870 00:38:32,230 --> 00:38:36,850 yang melimpah kehendak selepas 248 hari kuasa berterusan. 871 00:38:36,850 --> 00:38:40,350 Boeing dalam proses membangunkan menaik taraf perisian GCU yang 872 00:38:40,350 --> 00:38:42,350 akan membetulkan keadaan yang tidak selamat. 873 00:38:42,350 --> 00:38:44,226 >> Begitu banyak seperti peluru berpandu senario, di mana 874 00:38:44,226 --> 00:38:46,850 mereka mempunyai beberapa jenis pembolehubah yang mengira dan mengira, 875 00:38:46,850 --> 00:38:50,720 dan mengira, tetapi secara beransur-ansur melimpah sempadan keupayaannya, 876 00:38:50,720 --> 00:38:54,890 sama melakukan pesawat sialan mempunyai limpahan berubah-ubah 877 00:38:54,890 --> 00:38:56,410 selepas masa yang cukup untuk berjalan. 878 00:38:56,410 --> 00:38:59,240 Dan sebagainya dengan cara yang lidah-di-pipi bekerja isu ini 879 00:38:59,240 --> 00:39:04,400 adalah untuk benar-benar, reboot, kapal terbang anda setiap 247 hari, jadi memori yang akan dikosongkan 880 00:39:04,400 --> 00:39:06,100 dan berubah kembali kepada 0. 881 00:39:06,100 --> 00:39:09,410 Tetapi sedar, ini adalah sangat penjelmaan besar perisian, 882 00:39:09,410 --> 00:39:14,070 terutamanya seperti yang kita dengar tentang Apple Sistem pengendalian yang akan ke dalam kereta, 883 00:39:14,070 --> 00:39:18,030 dan diri memandu kereta daripada Google, dan apa-apa bilangan jelmaan perisian 884 00:39:18,030 --> 00:39:21,000 dalam kehidupan seharian kita, TV dan jam tangan, dan banyak lagi, 885 00:39:21,000 --> 00:39:24,950 menyedari dikelilingi oleh perisian, semua yang ditulis oleh kita manusia. 886 00:39:24,950 --> 00:39:28,150 >> Dan seperti yang kita semua tidak lama lagi akan menemui, ia sangat mudah dan sangat biasa 887 00:39:28,150 --> 00:39:30,250 untuk membuat kesilapan semasa menulis perisian. 888 00:39:30,250 --> 00:39:32,745 Dan jika anda tidak menangkap mereka, beberapa perkara buruk boleh berlaku. 889 00:39:32,745 --> 00:39:35,400 Kini kadang-kadang, ada perkara-perkara lucu yang boleh berlaku, 890 00:39:35,400 --> 00:39:38,280 atau sekurang-kurangnya kadang-kadang kita tahu untuk mengharapkan beberapa kejahatan. 891 00:39:38,280 --> 00:39:41,550 Jadi 0 dibahagikan dengan 0, dari gred sekolah, secara amnya adalah satu perkara yang buruk. 892 00:39:41,550 --> 00:39:43,050 Ia ditentukan. 893 00:39:43,050 --> 00:39:46,440 Dan ternyata out-- dan mari kita lihat jika mikrofon saya boleh mengambil ini up-- bahawa Apple 894 00:39:46,440 --> 00:39:47,790 mempunyai beberapa menyeronokkan dengan ini baru-baru ini. 895 00:39:47,790 --> 00:39:48,850 Jadi saya mempunyai iPhone di sini. 896 00:39:48,850 --> 00:39:54,160 Saya akan bercakap dengan Siri dan bertanya untuk memberi saya jawapan kepada 0 dibahagikan dengan 0. 897 00:39:54,160 --> 00:39:55,850 Apa yang 0 dibahagikan dengan 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Bayangkan bahawa anda mempunyai 0 cookies, dan anda berpecah mereka sama rata 900 00:40:02,230 --> 00:40:03,540 di kalangan 0 rakan-rakan. 901 00:40:03,540 --> 00:40:05,810 Berapa banyak cookies tidak setiap orang dapat? 902 00:40:05,810 --> 00:40:06,350 See? 903 00:40:06,350 --> 00:40:07,660 Ia tidak masuk akal. 904 00:40:07,660 --> 00:40:10,540 Dan Cookie Monster sedih bahawa tidak ada cookies. 905 00:40:10,540 --> 00:40:13,987 Dan anda sedih kerana anda tidak mempunyai rakan-rakan. 906 00:40:13,987 --> 00:40:15,570 DAVID J MALAN: Ia adalah jenis menjijikkan. 907 00:40:15,570 --> 00:40:17,550 Jadi ini adalah apa yang hanya berkata di sana. 908 00:40:17,550 --> 00:40:21,380 Ia tidak dapat ditentukan, ia tidak ditakrifkan, dan sesungguhnya, banyak bahasa pengaturcaraan 909 00:40:21,380 --> 00:40:24,950 atau, benar-benar, penyusun akan mengesan apabila anda, dalam program, 910 00:40:24,950 --> 00:40:27,050 cuba untuk membahagikan 0 oleh 0. 911 00:40:27,050 --> 00:40:29,830 Lebih seronok daripada walaupun ini, adalah yang nampaknya, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 adalah di Twitter hari ini. 913 00:40:31,270 --> 00:40:37,610 Dan dia menjawab ini, dengan ini, yang sememangnya comel. 914 00:40:37,610 --> 00:40:40,110 Tetapi mari kita lihat cepat pada beberapa konstruk lain, 915 00:40:40,110 --> 00:40:43,459 dan kemudian meletakkan beberapa ini kod untuk digunakan, dengan cara yang baik. 916 00:40:43,459 --> 00:40:45,250 Jadi ternyata, di samping untuk gelung, ada 917 00:40:45,250 --> 00:40:49,174 sesuatu yang dinamakan gelung sementara, yang kelihatan berbeza dan dilaksanakan 918 00:40:49,174 --> 00:40:51,590 yang differently-- sedikit dan akhirnya kita akan melihat examples-- 919 00:40:51,590 --> 00:40:53,500 tetapi dalam erti kata lain, ia adalah mudah kerana ia 920 00:40:53,500 --> 00:40:56,670 tidak membenarkan anda untuk memulakan dan mengemas kini dalam sempadan gelung. 921 00:40:56,670 --> 00:40:57,794 Anda masih boleh melaksanakannya. 922 00:40:57,794 --> 00:41:01,219 Jadi, anda boleh melakukan perkara yang tepat sama dengan gelung sementara, seperti untuk gelung, 923 00:41:01,219 --> 00:41:03,260 tetapi sintaks anda, ultimately-- kerana kita akan akhirnya 924 00:41:03,260 --> 00:41:04,551 see-- akan menjadi berbeza. 925 00:41:04,551 --> 00:41:07,450 Bahkan ada do manakala gelung, yang sebenarnya adalah sedikit berbeza, 926 00:41:07,450 --> 00:41:09,640 kerana manakala untuk gelung dan gelung sementara sentiasa 927 00:41:09,640 --> 00:41:13,005 memeriksa keadaan mereka dahulu, jika meneliti perkara ini atas ke bawah, 928 00:41:13,005 --> 00:41:16,440 ia jenis kelihatan seperti ia akan memeriksa keadaan ia yang terakhir kerana ia adalah 929 00:41:16,440 --> 00:41:17,910 benar-benar barisan terakhir kod. 930 00:41:17,910 --> 00:41:20,580 Dan sesungguhnya, yang akan menjadi berguna dalam program-program tertentu yang kita menulis, 931 00:41:20,580 --> 00:41:23,746 jika anda mahu hanya membuta tuli melakukan sesuatu dan akhirnya memeriksa keadaan. 932 00:41:23,746 --> 00:41:25,205 Itu tidak semestinya sesuatu yang buruk. 933 00:41:25,205 --> 00:41:27,912 Jika kita mahu pembolehubah, yang boleh kita lakukan dalam beberapa cara yang berbeza. 934 00:41:27,912 --> 00:41:30,290 Dan kita lihat dalam Foxtrot yang kartun, salah satu cara untuk melakukannya, 935 00:41:30,290 --> 00:41:33,400 di mana anda mengisytiharkan pembolehubah anda, seperti int kaunter koma bertitik, 936 00:41:33,400 --> 00:41:36,570 dan kemudian later-- mungkin seterusnya garis, mungkin 10 baris later-- 937 00:41:36,570 --> 00:41:37,800 anda sebenarnya memulakan ia. 938 00:41:37,800 --> 00:41:42,230 Jadi ini 2 baris kod mengisytiharkan pembolehubah jenis int 939 00:41:42,230 --> 00:41:44,930 dan memanggilnya kaunter, supaya ia memberikan saya bit cukup untuk memegang int. 940 00:41:44,930 --> 00:41:48,230 Dan kemudian akhirnya, ia meletakkan nilai 0 ke dalam pembolehubah itu. 941 00:41:48,230 --> 00:41:51,250 Ia mengatur 0 dan 1 dalam satu corak, yang kita tahu dari minggu lepas, 942 00:41:51,250 --> 00:41:53,260 mewakili bilangan yang kita kenali sebagai 0. 943 00:41:53,260 --> 00:41:56,920 Atau terus-terang, anda boleh melakukan ini banyak lebih ringkas, sama seperti ini. 944 00:41:56,920 --> 00:41:59,390 >> Sekarang kita juga mempunyai keupayaan untuk fungsi panggilan. 945 00:41:59,390 --> 00:42:03,070 Dan sebenarnya, di sini adalah garis 2 program, atau sebagian daripadanya, 946 00:42:03,070 --> 00:42:06,157 yang membolehkan kita untuk benar-benar menulis beberapa kod yang 947 00:42:06,157 --> 00:42:08,990 mendapat rentetan daripada user-- banyak seperti sukarela kami seketika ago-- 948 00:42:08,990 --> 00:42:11,320 menyimpan hasil dalam pembolehubah yang dipanggil nama, 949 00:42:11,320 --> 00:42:15,470 dan then-- sama seperti dengan sukarela kami dengan cetakan printf-- daripada nilai-nilai 950 00:42:15,470 --> 00:42:19,180 dengan melepaskan dua hujah, tali, diikuti oleh pembolehubah 951 00:42:19,180 --> 00:42:20,781 dipanggil, nama, sendiri. 952 00:42:20,781 --> 00:42:23,155 Jadi mari kita lihat, sebelum kita kembali kepada Mario di sana, 953 00:42:23,155 --> 00:42:26,010 di beberapa sekarang, contoh-contoh ini. 954 00:42:26,010 --> 00:42:30,537 >> Saya akan pergi ke depan dan terbuka sehingga, katakan, fungsi-0.c. 955 00:42:30,537 --> 00:42:33,120 Dan seperti biasa, kod ini adalah didapati di laman web kursus ini, 956 00:42:33,120 --> 00:42:35,660 jadi anda boleh bermain bersama-sama pada rumah dan melihat ia kemudian. 957 00:42:35,660 --> 00:42:40,400 Tetapi di sini adalah program dalam itu dasarnya, dari baris 17 hingga 22. 958 00:42:40,400 --> 00:42:43,270 Program utama adalah di mana program sentiasa akan bermula. 959 00:42:43,270 --> 00:42:46,980 Program ini, nampaknya, akan untuk mencetak nama, usus besar. 960 00:42:46,980 --> 00:42:50,320 Ia kemudian akan memanggil GetString, seperti yang kita lakukan dengan sukarelawan kami. 961 00:42:50,320 --> 00:42:53,365 Dan kemudian, ini adalah menarik, ia akan memanggil PrintName. 962 00:42:53,365 --> 00:42:56,490 Ternyata, selama ini, terdapat seolah-olah menjadi fungsi yang dipanggil PrintName. 963 00:42:56,490 --> 00:42:57,614 Yang mencetak nama seseorang. 964 00:42:57,614 --> 00:43:01,210 Kami tidak perlu menggunakan printf dari tadi, ada PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Tetapi itu mengelirukan kerana PrintName tidak 966 00:43:03,500 --> 00:43:06,760 dilengkapi dengan C. Orang tidak mengada-adakan itu kira-kira 40 atau 50 tahun yang lalu, 967 00:43:06,760 --> 00:43:07,990 Saya lakukan, sebaliknya. 968 00:43:07,990 --> 00:43:10,330 Dan sebenarnya, jika saya tatal turun lagi, notis 969 00:43:10,330 --> 00:43:14,200 bagaimana saya boleh menulis saya sendiri fungsi dalam C. Kami akan mempunyai akhirnya 970 00:43:14,200 --> 00:43:16,319 menjelaskan mengapa kita terus berkata, tidak sah, di beberapa tempat, 971 00:43:16,319 --> 00:43:18,110 tetapi untuk hari ini, mari kita hanya melihat nama. 972 00:43:18,110 --> 00:43:20,905 >> On line 24, jika anda mahu mewujudkan fungsi anda sendiri, 973 00:43:20,905 --> 00:43:22,780 anda benar-benar menulis menamakan fungsi. 974 00:43:22,780 --> 00:43:24,340 Saya memilih PrintName. 975 00:43:24,340 --> 00:43:26,159 Dalam kurungan, anda kemudian menentukan apa jenis 976 00:43:26,159 --> 00:43:28,450 input, dan berapa banyak anda mahu fungsi ini untuk mengambil. 977 00:43:28,450 --> 00:43:31,906 Dalam kes ini, saya ingin mengambil 1 pembolehubah dipanggil, nama, 978 00:43:31,906 --> 00:43:34,030 dan ia akan menjadi dari jenis, tali, jadi ia akan 979 00:43:34,030 --> 00:43:35,780 menjadi beberapa jujukan aksara. 980 00:43:35,780 --> 00:43:39,170 Dan kemudian, program-- ini sama seperti di Awal, 981 00:43:39,170 --> 00:43:42,590 anda boleh mempunyai teka-teki adat pieces-- akan mempunyai tingkah laku adat ini. 982 00:43:42,590 --> 00:43:46,760 Ia akan memanggil printf lulus dalam, hello, pemegang tempat, 983 00:43:46,760 --> 00:43:49,110 dan kemudian ia akan plug dalam apa pengguna dipanggil. 984 00:43:49,110 --> 00:43:51,450 >> Jadi ini adalah satu contoh apa yang seorang saintis komputer akan 985 00:43:51,450 --> 00:43:55,090 abstraksi panggilan atau berfungsi penguraian, yang hanya 986 00:43:55,090 --> 00:43:58,110 cara mewah saying-- Adakah jika anda suka ini idea tahap tinggi, 987 00:43:58,110 --> 00:44:01,569 seperti saya mahu fungsi yang mencetak nama seseorang, benar-benar anda 988 00:44:01,569 --> 00:44:04,360 benar-benar boleh menulis printf dan kemudian lulus dalam hujah-hujah anda mahu, 989 00:44:04,360 --> 00:44:07,340 dan program ini akan bekerja, kerana ia mempunyai sejak Rabu. 990 00:44:07,340 --> 00:44:10,510 Tetapi anda boleh mula untuk abstrak jauh tanggapan mencetak nama. 991 00:44:10,510 --> 00:44:13,270 Anda boleh memberikan nama, seperti PrintName, dan ini 992 00:44:13,270 --> 00:44:15,280 adalah idea ini lapisan dari minggu 0. 993 00:44:15,280 --> 00:44:19,910 >> Selepas ini, saya dan anda tidak perlu tahu atau mengambil berat bagaimana PrintName dilaksanakan. 994 00:44:19,910 --> 00:44:22,470 Ya ia menggunakan printf, mungkin ia tidak, yang tahu apa yang menggunakan? 995 00:44:22,470 --> 00:44:23,410 Siapa yang peduli? 996 00:44:23,410 --> 00:44:26,034 Sekarang saya bercakap di sini, bukannya di sini. 997 00:44:26,034 --> 00:44:28,700 Dan sesungguhnya, program kita lebih maju dan canggih, 998 00:44:28,700 --> 00:44:32,550 kita akan terus mengambil untuk diberikan yang keping tahap teka-teki yang lebih rendah wujud. 999 00:44:32,550 --> 00:44:34,780 Kerana kita menuliskannya atau orang lain lakukan, supaya 1000 00:44:34,780 --> 00:44:36,910 yang kita boleh membina di atas mereka. 1001 00:44:36,910 --> 00:44:39,430 Mari kita lihat ini varian, berfungsi satu. 1002 00:44:39,430 --> 00:44:41,780 >> Jadi yang satu ini lebih sedikit maju, tetapi ternyata 1003 00:44:41,780 --> 00:44:44,570 yang di perpustakaan CS50, hanya ada satu fungsi GetInt. 1004 00:44:44,570 --> 00:44:47,720 Kami tidak fikir, tahun lalu, untuk melaksanakan fungsi GetPositiveInt. 1005 00:44:47,720 --> 00:44:50,970 Dan itu sedikit menjengkelkan kerana jika anda semua menulis program yang mengandung 1006 00:44:50,970 --> 00:44:53,325 anda ingin mendapatkan yang positif integer dari pengguna, 1007 00:44:53,325 --> 00:44:55,010 anda benar-benar boleh menggunakan GetInt. 1008 00:44:55,010 --> 00:44:57,840 Dan anda benar-benar boleh menyemak dengan keadaan dan mungkin gelung 1009 00:44:57,840 --> 00:45:00,320 jika int yang lebih besar daripada 0 dan menjerit pada pengguna 1010 00:45:00,320 --> 00:45:02,699 jika dia tidak memberi anda nombor positif. 1011 00:45:02,699 --> 00:45:04,740 Tetapi mari kita membina ini bangunan menyekat diri kita sendiri, a, 1012 00:45:04,740 --> 00:45:06,555 sekeping Scratch adat, jika anda akan. 1013 00:45:06,555 --> 00:45:08,680 Saya akan mempunyai program di sini yang akhirnya, saya 1014 00:45:08,680 --> 00:45:11,780 mahu dapat untuk memanggil GetPositiveInt, dan saya mahu menjadi 1015 00:45:11,780 --> 00:45:14,200 boleh mencetak apa sahaja int iaitu. 1016 00:45:14,200 --> 00:45:16,240 Tetapi ini yang diambil dari sekarang. 1017 00:45:16,240 --> 00:45:19,050 Ia hanya diberi pada tahap yang tinggi nama yang mengatakan apa yang berlaku, 1018 00:45:19,050 --> 00:45:21,780 yang indah kerana ia sangat intuitif sekarang untuk dibaca. 1019 00:45:21,780 --> 00:45:24,710 Dan jika saya tidak mengambil berat apa yang di bawah hood, biarlah saya tatal ke bawah. 1020 00:45:24,710 --> 00:45:27,140 Dan ia sedikit menakutkan pada mulanya, terutama 1021 00:45:27,140 --> 00:45:29,470 jika ini adalah program pertama anda, tetapi mari kita lihat. 1022 00:45:29,470 --> 00:45:32,860 >> Saya tidak lagi berkata, tidak sah, kerana ia ternyata fungsi, 1023 00:45:32,860 --> 00:45:34,777 sama seperti GetString, boleh mengembalikan nilai kepada saya. 1024 00:45:34,777 --> 00:45:36,610 Mereka tidak hanya perlu untuk mencetak dengan skrin, 1025 00:45:36,610 --> 00:45:38,410 mereka benar-benar boleh menyerahkan saya sesuatu kembali. 1026 00:45:38,410 --> 00:45:41,535 Dan sedangkan sebelum PrintName, Saya tidak memerlukan apa-apa kembali. 1027 00:45:41,535 --> 00:45:44,160 Saya memerlukan kesan sampingan sesuatu yang muncul pada skrin, 1028 00:45:44,160 --> 00:45:46,570 tetapi saya tidak perlu manusia menyerahkan saya sesuatu kembali. 1029 00:45:46,570 --> 00:45:48,840 Di sini, dengan GetPositiveInt, seperti dengan GetInt, 1030 00:45:48,840 --> 00:45:50,640 Saya hendak diserahkan sesuatu kembali. 1031 00:45:50,640 --> 00:45:53,220 Jadi, saya berkata tidak, tidak sah, pada baris 23, tetapi int, 1032 00:45:53,220 --> 00:45:55,570 yang mengatakan, fungsi ini bahawa saya menulis, 1033 00:45:55,570 --> 00:45:58,860 dipanggil GetPositiveInt akan tangan saya kembali integer, tidak apa-apa, 1034 00:45:58,860 --> 00:45:59,890 tidak sah. 1035 00:45:59,890 --> 00:46:03,280 >> Sementara itu, ia akan mengambil masa tidak input, jadi saya, jenis, diterbalikkan ia. 1036 00:46:03,280 --> 00:46:08,280 Saya tidak memberi apa-apa GetPositiveInt input, saya mahu ia memberi saya keluarannya. 1037 00:46:08,280 --> 00:46:09,800 Kemudian apa yang berlaku sekarang? 1038 00:46:09,800 --> 00:46:11,640 Jadi di sini adalah bagaimana saya boleh mengisytiharkan pembolehubah. 1039 00:46:11,640 --> 00:46:15,090 Saya telah melakukannya di luar gelung, atas sebab-sebab akhirnya kita akan melihat, 1040 00:46:15,090 --> 00:46:17,700 tetapi ini hanya memberikan saya 32 bit dipanggil, n, 1041 00:46:17,700 --> 00:46:20,952 dan saya telah pra-menentukan mereka untuk menyimpan integer. 1042 00:46:20,952 --> 00:46:23,660 Dan di sini adalah bahawa, lakukan semasa membina, dan ini adalah mengapa ia berguna. 1043 00:46:23,660 --> 00:46:26,700 Secara harfiah melakukan ini, manakala n adalah kurang daripada 1. 1044 00:46:26,700 --> 00:46:28,030 Jadi mari kita lihat apa yang berlaku. 1045 00:46:28,030 --> 00:46:30,760 Saya mencetak keluar, sila memberi saya int yang positif. 1046 00:46:30,760 --> 00:46:34,300 Saya kemudian mendapatkan int, menggunakan CS50 berfungsi dan disimpan di n. 1047 00:46:34,300 --> 00:46:38,990 >> Dan kemudian, apa baris kod mungkin mendapat dilaksanakan akan datang, secara logik? 1048 00:46:38,990 --> 00:46:41,890 Yang garis nombor? 1049 00:46:41,890 --> 00:46:42,571 Ya, jadi 31. 1050 00:46:42,571 --> 00:46:45,320 Anda tidak akan tahu sehingga anda telah telah diberitahu atau semacam membuat kesimpulan itu, 1051 00:46:45,320 --> 00:46:45,986 tetapi itu benar. 1052 00:46:45,986 --> 00:46:48,280 Ia pergi atas ke bawah dan kemudian terus mengulangi. 1053 00:46:48,280 --> 00:46:55,840 Jadi, jika saya telah menaip di katakan, bilangan negatif 1, adalah n kurang daripada negatif 1? 1054 00:46:55,840 --> 00:46:56,340 Yeah. 1055 00:46:56,340 --> 00:46:58,470 Kerana negatif 1 adalah kurang daripada 1. 1056 00:46:58,470 --> 00:46:59,510 Jadi apa yang perlu berlaku? 1057 00:46:59,510 --> 00:47:03,260 Saya akan melakukan ini manakala n adalah kurang daripada 1, 1058 00:47:03,260 --> 00:47:05,760 jadi saya akan kembali ke garisan 28. 1059 00:47:05,760 --> 00:47:09,530 >> Dan setiap time-- dan mari kita berjalan this-- membuat fungsi 1 untuk menyusun, 1060 00:47:09,530 --> 00:47:11,340 dan sekarang dot mengurangkan fungsi 1. 1061 00:47:11,340 --> 00:47:14,280 Saya menaip negatif 1, ia akan terus menjerit pada saya 1062 00:47:14,280 --> 00:47:17,530 sehingga saya bekerjasama kerana masing-masing input saya adalah kurang daripada 1 1063 00:47:17,530 --> 00:47:20,070 dan jika ia manakala kurang daripada 1, Saya akan terus melakukan ini. 1064 00:47:20,070 --> 00:47:24,240 Jika saya akhirnya memberikan nombor seperti 50, bersyukur, ia berkata, terima kasih untuk 50. 1065 00:47:24,240 --> 00:47:24,970 Mengapa? 1066 00:47:24,970 --> 00:47:30,640 Kerana sebaik sahaja n tidak kurang daripada 1, saya berhenti terkandas dalam gelung ini, 1067 00:47:30,640 --> 00:47:33,840 dan kata kunci baru ini hari ini, pulangan, secara literal adakah itu. 1068 00:47:33,840 --> 00:47:36,800 Oleh itu, saya baru sahaja dilaksanakan, dalam rasa, bersamaan GetString, 1069 00:47:36,800 --> 00:47:40,590 di mana saya menyerahkan kembali kepada barang siapa yang menggunakan saya, beberapa nilai. 1070 00:47:40,590 --> 00:47:42,820 Ia tidak perlu tali, ia int. 1071 00:47:42,820 --> 00:47:44,990 Jadi mudah, cepat contoh, tetapi tidak lama lagi kita akan 1072 00:47:44,990 --> 00:47:47,930 melihat beberapa lebih canggih versi masih. 1073 00:47:47,930 --> 00:47:53,882 Malah, mari kita lihat pada satu angka, yang dipanggil return.c. 1074 00:47:53,882 --> 00:47:55,590 Dan yang satu ini sebenarnya lebih mudah. 1075 00:47:55,590 --> 00:47:59,010 Jadi tujuan ini program dalam life-- mari kita menyusun dan menjalankan, 1076 00:47:59,010 --> 00:48:03,090 sehingga membuat balasan, dot slash, notis return-- 1077 00:48:03,090 --> 00:48:05,530 program ini hanya kiub nilai 2. 1078 00:48:05,530 --> 00:48:08,410 Ia agak bodoh, ia sukar kod, ia tidak mengambil apa-apa input, 1079 00:48:08,410 --> 00:48:12,220 tetapi ia menunjukkan satu lagi fungsi yang saya telah menulis sendiri. 1080 00:48:12,220 --> 00:48:15,760 Jadi di sini, saya telah mengisytiharkan berubah-ubah, yang dipanggil x, jenis int, 1081 00:48:15,760 --> 00:48:17,840 sama dengan bilangan 2, benar-benar sewenang-wenangnya. 1082 00:48:17,840 --> 00:48:19,530 Ini hanyalah beberapa percetakan gebu. 1083 00:48:19,530 --> 00:48:23,070 Ia mengatakan x kini, seperti dan itu, cubing dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 Dan sihir nampaknya selaras 21. 1085 00:48:26,390 --> 00:48:30,120 Saya memanggil fungsi yang dipanggil, kiub, Saya menyerahkan sehelai kertas 1086 00:48:30,120 --> 00:48:32,890 dengan nombor 2 yang ditulis di atasnya, dan apa nilai, matematik, 1087 00:48:32,890 --> 00:48:34,860 yang saya mahu mendapatkan daripada itu? 1088 00:48:34,860 --> 00:48:36,570 Sama seperti cek kewarasan? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Betul? 1091 00:48:37,570 --> 00:48:40,160 Saya mahu 2 cubed kembali, 2 hingga kuasa 3, jadi 8 kembali. 1092 00:48:40,160 --> 00:48:42,570 >> Jadi di mana kiub dilaksanakan? 1093 00:48:42,570 --> 00:48:44,349 Nah, notis ia dilaksanakan di sini. 1094 00:48:44,349 --> 00:48:47,140 Dan seperti sebelum ini, secara logik, walaupun sintaks yang mungkin 1095 00:48:47,140 --> 00:48:49,320 sangat baru kepada ramai daripada anda, Saya hendak fungsi ini 1096 00:48:49,320 --> 00:48:51,780 ke tangan saya kembali sehelai kertas dengan int di atasnya. 1097 00:48:51,780 --> 00:48:53,990 Jadi saya mempunyai int, yang Nama sewenang-wenangnya, 1098 00:48:53,990 --> 00:48:55,530 tetapi yang sesuai dipanggil kuasa tiga. 1099 00:48:55,530 --> 00:48:58,430 Input kepadanya, adalah n daripada menaip integer, jadi itu 1100 00:48:58,430 --> 00:49:00,800 bagaimana saya boleh lulus dalam bilangan 2 pada sehelai kertas. 1101 00:49:00,800 --> 00:49:03,910 Dan kemudian ternyata C sokongan matematik, jadi anda tidak perlu x bagi kali, 1102 00:49:03,910 --> 00:49:06,680 anda hanya menggunakan asterisk untuk pendaraban. 1103 00:49:06,680 --> 00:49:11,070 Dan ini mengembalikan n kali n kali n, yang hanya nilai cubed. 1104 00:49:11,070 --> 00:49:12,840 >> Jadi di mana kita akan pergi dengan semua ini? 1105 00:49:12,840 --> 00:49:14,570 Ini sebenarnya satu lawatan badai, yakinlah, 1106 00:49:14,570 --> 00:49:16,410 bahawa dalam bahagian-bahagian super dan dalam masalah menetapkan 1, 1107 00:49:16,410 --> 00:49:18,368 anda akan berjalan di semua ini lebih-lebih. 1108 00:49:18,368 --> 00:49:22,490 Dan dalam masalah set 1, kami akan beralih dari dunia grafik Scratch 1109 00:49:22,490 --> 00:49:25,640 kepada sesuatu yang lebih baris arahan dalam C. Tetapi kita akan mendapat inspirasi 1110 00:49:25,640 --> 00:49:27,680 dari sini permainan ini dari tadi, di mana 1111 00:49:27,680 --> 00:49:31,591 menggunakan C dan edisi standard daripada p set anda akan melaksanakan piramid Mario. 1112 00:49:31,591 --> 00:49:34,340 Dan dalam edisi penggodam daripada p set, jika anda supaya memilih untuk memilih, 1113 00:49:34,340 --> 00:49:38,280 anda akan melaksanakan sedikit lebih mencabar piramid dengan dua puncak. 1114 00:49:38,280 --> 00:49:41,239 Anda juga akan melaksanakan algoritma, algoritma tamak. 1115 00:49:41,239 --> 00:49:43,030 Ternyata ada yang beberapa logik yang menarik 1116 00:49:43,030 --> 00:49:45,640 di belakang proses berjalan stesen juruwang 1117 00:49:45,640 --> 00:49:47,410 dan benar-benar menyerahkan seseorang perubahan kembali. 1118 00:49:47,410 --> 00:49:50,410 Terdapat satu algoritma yang yang agak mudah, yang anda mungkin walaupun 1119 00:49:50,410 --> 00:49:53,576 memahami secara intuitif apabila anda mula-mula membaca kitab itu menyedari bahawa apa yang saya telah sentiasa 1120 00:49:53,576 --> 00:49:57,110 dilakukan bila-bila masa saya telah diberikan seseorang beberapa back-- wang yang membolehkan anda untuk sentiasa 1121 00:49:57,110 --> 00:50:00,679 mengurangkan bilangan wang kertas atau syiling logam 1122 00:50:00,679 --> 00:50:02,220 bahawa anda menyerahkan kembali kepada pengguna. 1123 00:50:02,220 --> 00:50:04,610 Dan ini, sudah tentu, adalah menarik kerana jika anda pergi ke CVS atau barang kecil, 1124 00:50:04,610 --> 00:50:06,430 anda tidak mahu menjadi tangan sejumlah besar orang-orang yang 1125 00:50:06,430 --> 00:50:07,596 atau sejumlah besar beberapa sen. 1126 00:50:07,596 --> 00:50:10,120 Anda mahu yang paling sedikit syiling, mungkin, mungkin. 1127 00:50:10,120 --> 00:50:13,070 >> Akhir sekali, anda juga akan dicabar melibatkan diri dalam dunia air 1128 00:50:13,070 --> 00:50:17,220 dan benar-benar mendapatkan penghargaan untuk pemetaan antara kadar aliran, 1129 00:50:17,220 --> 00:50:19,890 daripada suka, air dalam mandi, betapa banyak air digunakan. 1130 00:50:19,890 --> 00:50:22,640 Dan kiasan di dalamnya, akan music ini di sini, 1131 00:50:22,640 --> 00:50:24,840 yang kita akan berakhir pada untuk hanya 60 saat, 1132 00:50:24,840 --> 00:50:29,070 cat gambar kepala pancuran aliran rendah. 1133 00:50:29,070 --> 00:50:30,886 >> [VIDEO MAIN SEMULA] 1134 00:50:30,886 --> 00:50:31,385 -Semua Betul. 1135 00:50:31,385 --> 00:50:32,774 Saya mendapat segala-galanya di sini. 1136 00:50:32,774 --> 00:50:35,800 Saya mendapat Cyclone F Series, Hydra, Jetflow, Stockholm 1137 00:50:35,800 --> 00:50:37,660 Supersteam, anda nama itu. 1138 00:50:37,660 --> 00:50:39,265 >> -Dan Apa yang anda cadangkan? 1139 00:50:39,265 --> 00:50:40,460 >> -Apa Yang anda cari? 1140 00:50:40,460 --> 00:50:41,300 >> Lelaki -Power. 1141 00:50:41,300 --> 00:50:42,285 Kuasa. 1142 00:50:42,285 --> 00:50:42,910 -like Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Itu Untuk radiasi. 1144 00:50:44,520 --> 00:50:46,335 -Itu Betul. 1145 00:50:46,335 --> 00:50:48,275 -Sekarang Apa ini? 1146 00:50:48,275 --> 00:50:49,704 -Itu Komando 450. 1147 00:50:49,704 --> 00:50:50,620 Saya tidak menjual yang satu. 1148 00:50:50,620 --> 00:50:51,700 >> -Tetapi Itulah yang kita mahu. 1149 00:50:51,700 --> 00:50:52,680 Ia adalah satu komando 450. 1150 00:50:52,680 --> 00:50:53,882 >> -Tiada Percayalah. 1151 00:50:53,882 --> 00:50:55,090 Ia hanya digunakan dalam sarkas. 1152 00:50:55,090 --> 00:50:56,512 Ia untuk gajah. 1153 00:50:56,512 --> 00:50:59,356 >> -I'll Membayar apa-apa. 1154 00:50:59,356 --> 00:51:01,252 >> -Apa Tentang Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -Dia Tidak dapat mengendalikan itu. 1156 00:51:02,760 --> 00:51:04,910 Dia halus. 1157 00:51:04,910 --> 00:51:05,750 Oh ya. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [AKHIR MAIN SEMULA] 1160 00:51:37,320 --> 00:51:37,700 DAVID MALAN J: Baiklah. 1161 00:51:37,700 --> 00:51:38,820 Itu jika untuk CS50. 1162 00:51:38,820 --> 00:51:40,050 Kita akan melihat lagi minggu depan. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> SPEAKER 1: [? Scully?], [? Ian,?] sejauh projek outro ini, 1165 00:51:49,029 --> 00:51:50,362 apa yang telah anda semua datang dengan? 1166 00:51:50,362 --> 00:51:51,990 >> SPEAKER 2: Sebenarnya, kami telah diberi ia pelbagai pemikiran, 1167 00:51:51,990 --> 00:51:53,250 dan kita berfikir bahawa cara terbaik supaya- 1168 00:51:53,250 --> 00:51:53,660 >> SPEAKER 3: May I? 1169 00:51:53,660 --> 00:51:54,326 >> SPEAKER 2: Yeah. 1170 00:51:54,326 --> 00:51:56,360 Dengan segala cara, sebenarnya. 1171 00:51:56,360 --> 00:51:59,425 >> SPEAKER 3: Jadi saya fikir kita boleh meringkaskan idea kami 1172 00:51:59,425 --> 00:52:05,450 untuk outros dengan salah apa-apa word--. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID MALAN J: Tiada apa-apa? 1175 00:52:10,409 --> 00:52:11,200 SPEAKER 3: Tiada apa-apa. 1176 00:52:11,200 --> 00:52:12,990 DAVID MALAN J: Apa maksudnya? 1177 00:52:12,990 --> 00:52:16,260 SPEAKER 3: outros kira-kira apa-apa. 1178 00:52:16,260 --> 00:52:21,720 SPEAKER 2: Sebenarnya, saya maksudkan, dalam falsafah, Maksud saya, tiada apa yang sesuatu sentiasa. 1179 00:52:21,720 --> 00:52:24,200 SPEAKER 1: Jadi what's-- apa yang premis? 1180 00:52:24,200 --> 00:52:25,720 SPEAKER 3: Jadi ia seperti hidup. 1181 00:52:25,720 --> 00:52:26,680 OKAY. 1182 00:52:26,680 --> 00:52:28,294 Apa yang anda lakukan hari ini? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID MALAN J: Saya bangun, mempunyai sarapan pagi, dan datang untuk bekerja. 1184 00:52:31,811 --> 00:52:34,056 >> SPEAKER 3: Itu outro yang. 1185 00:52:34,056 --> 00:52:36,806 SPEAKER 2: Tetapi, maksud saya, tidak perlu sesuatu yang berlaku kepadanya pada the-- 1186 00:52:36,806 --> 00:52:37,889 SPEAKER 3: Tidak, tidak, tidak, tidak. 1187 00:52:37,889 --> 00:52:40,220 Tiada apa yang berlaku. 1188 00:52:40,220 --> 00:52:42,910 >> SPEAKER 1: Jadi mengapa kita menonton? 1189 00:52:42,910 --> 00:52:46,956 >> SPEAKER 3: Kerana ia adalah satu outro untuk CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID MALAN J: Belum lagi. 1191 00:52:48,652 --> 00:52:49,151