1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [MUZIK Bermain] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. MALAN: Baiklah, ini adalah CS50. 5 00:00:16,240 --> 00:00:18,010 Dan ini adalah satu minggu. 6 00:00:18,010 --> 00:00:22,050 Jadi ingat bahawa kali terakhir pada minggu sifar, kita memberi tumpuan kepada pemikiran pengiraan. 7 00:00:22,050 --> 00:00:25,440 Dan kita beralih daripada memahami apa Awal, pengaturcaraan grafik 8 00:00:25,440 --> 00:00:27,360 bahasa dari rakan-rakan kami di Media Lab MIT. 9 00:00:27,360 --> 00:00:31,730 >> Dan dengan Scratch, adakah kita meneroka idea-idea seperti fungsi, dan syarat-syarat, 10 00:00:31,730 --> 00:00:35,210 dan gelung, dan pembolehubah, dan juga peristiwa, dan benang, dan banyak lagi. 11 00:00:35,210 --> 00:00:37,880 Dan hari ini, kita akan terus menggunakan idea-idea, 12 00:00:37,880 --> 00:00:40,630 dan benar-benar mengambil mereka untuk diberikan, tetapi menterjemahkannya 13 00:00:40,630 --> 00:00:44,220 kepada bahasa lain yang dikenali sebagai C. Sekarang, C adalah bahasa yang lebih tradisional. 14 00:00:44,220 --> 00:00:46,020 Ia adalah tahap yang lebih rendah bahasa, jika anda akan. 15 00:00:46,020 --> 00:00:47,300 >> Ia adalah semata-mata teks. 16 00:00:47,300 --> 00:00:49,910 Dan sebagainya pada pandangan pertama, ia semua akan kelihatan agak samar 17 00:00:49,910 --> 00:00:51,430 jika anda tidak pernah diprogramkan sebelum. 18 00:00:51,430 --> 00:00:53,530 Kami akan mempunyai koma bertindih, dan kurungan, 19 00:00:53,530 --> 00:00:55,150 dan pendakap kerinting, dan banyak lagi. 20 00:00:55,150 --> 00:00:57,240 Tetapi sedar bahawa walaupun walaupun sintaksis adalah 21 00:00:57,240 --> 00:01:00,600 akan kelihatan sedikit tidak dikenali kepada kebanyakan anda, melihat masa lalu itu. 22 00:01:00,600 --> 00:01:03,220 Dan cuba untuk melihat idea-idea yang, sememangnya, biasa, 23 00:01:03,220 --> 00:01:06,750 kerana di sini pada minggu satu apa kami akan mula lakukan adalah untuk membandingkan, 24 00:01:06,750 --> 00:01:08,980 pada mulanya, Scratch berbanding C. 25 00:01:08,980 --> 00:01:12,350 >> Maka, misalnya, ingat bahawa apabila kita dilaksanakan pertama program kami 26 00:01:12,350 --> 00:01:16,220 Kali terakhir, kami mempunyai blok yang kelihatan sesuatu yang kecil seperti this-- apabila 27 00:01:16,220 --> 00:01:19,990 bendera hijau diklik, dan kemudian kita mempunyai satu keping teka-teki atau lebih di bawahnya, 28 00:01:19,990 --> 00:01:22,150 dalam kes ini, berkata, hello dunia. 29 00:01:22,150 --> 00:01:24,870 Jadi, sesungguhnya, dalam Scratch, apabila saya klik bendera hijau 30 00:01:24,870 --> 00:01:27,390 dengan mengendalikan program, jadi untuk bercakap, ini adalah 31 00:01:27,390 --> 00:01:29,520 blok yang dapat dilaksanakan, atau berlari. 32 00:01:29,520 --> 00:01:32,230 Dan, khususnya, Scratch berkata, hello, dunia. 33 00:01:32,230 --> 00:01:35,377 >> Sekarang, saya boleh dinyatakan perkataan yang berbeza di sini. 34 00:01:35,377 --> 00:01:37,960 Tetapi kita akan melihat bahawa, sesungguhnya, banyak ini blocks-- dan sesungguhnya, 35 00:01:37,960 --> 00:01:41,880 dalam C banyak functions-- boleh parametrized atau disesuaikan 36 00:01:41,880 --> 00:01:43,150 untuk melakukan perkara-perkara yang berbeza. 37 00:01:43,150 --> 00:01:45,520 Malah, dalam C jika kita mahu menukar, sekarang, 38 00:01:45,520 --> 00:01:47,567 program Scratch ini ke bahasa lain ini, 39 00:01:47,567 --> 00:01:49,650 kita akan naik sedikit sesuatu seperti ini. 40 00:01:49,650 --> 00:01:52,540 >> Diberikan, terdapat beberapa yang tidak dikenali sintaks terdapat kemungkinan besar, int, 41 00:01:52,540 --> 00:01:54,380 dan kurungan, dan tidak sah. 42 00:01:54,380 --> 00:01:57,740 Tetapi printf-- walaupun anda akan fikir ia hanya akan menjadi cetak. 43 00:01:57,740 --> 00:02:00,120 Tetapi cetak bermakna cetak diformat, kerana kita tidak lama lagi akan melihat. 44 00:02:00,120 --> 00:02:02,140 Ini benar-benar akan mencetak ke skrin apa sahaja 45 00:02:02,140 --> 00:02:05,990 ada di dalam orang-orang kurungan, yang sudah tentu dalam kes ini adalah, hello dunia. 46 00:02:05,990 --> 00:02:09,290 >> Tetapi anda akan melihat beberapa lain sintaksis, beberapa petikan berganda, 47 00:02:09,290 --> 00:02:11,890 bahawa kurungan pada akhirnya, separuh kolon dan sebagainya. 48 00:02:11,890 --> 00:02:15,027 Jadi ada sedikit overhead, boleh dikatakan, kedua-dua kognitif 49 00:02:15,027 --> 00:02:17,860 dan sintaksis, yang kita akan untuk perlu ingat tidak lama lagi. 50 00:02:17,860 --> 00:02:20,720 Tetapi sedar bahawa dengan amalan, ini akan mula untuk melompat keluar pada anda. 51 00:02:20,720 --> 00:02:24,920 >> Malah, mari kita fokus pada yang satu fungsi specifically-- dalam kes ini, 52 00:02:24,920 --> 00:02:26,290 bertanya khabar dunia. 53 00:02:26,290 --> 00:02:27,560 Jadi katakan adalah fungsi. 54 00:02:27,560 --> 00:02:31,320 Hello dunia adalah parameternya, atau hujah, penyesuaian. 55 00:02:31,320 --> 00:02:34,320 >> Dan keseimbangan dalam C hanya akan menjadi satu baris ini di sini, 56 00:02:34,320 --> 00:02:38,710 mana printf adalah bersamaan dengan, katakan, rentetan dipetik berganda, hello 57 00:02:38,710 --> 00:02:41,470 dunia adalah bersamaan, sudah tentu, dengan apa yang ada di dalam kotak putih di sana. 58 00:02:41,470 --> 00:02:45,680 Dan garis sendeng terbalik n, walaupun sedikit pelik dan tidak hadir Awal, 59 00:02:45,680 --> 00:02:49,380 hanya akan mempunyai kesan yang kita akan lihat di dalam komputer, seperti Mac saya atau PC, 60 00:02:49,380 --> 00:02:51,660 hanya menggerakkan kursor ke baris seterusnya. 61 00:02:51,660 --> 00:02:53,970 Ia seperti memukul Enter pada papan kekunci anda. 62 00:02:53,970 --> 00:02:55,580 >> Oleh itu, kita akan melihat bahawa sekali lagi tidak lama lagi. 63 00:02:55,580 --> 00:02:58,640 Tetapi pertama, mari kita lihat ini contoh lain dalam kes itu gelung. 64 00:02:58,640 --> 00:03:02,830 Kami mempunyai ini selama-lamanya gelung masa lalu, yang merupakan satu siri kepingan teka-teki 65 00:03:02,830 --> 00:03:05,490 yang melakukan sesuatu yang betul-betul forever-- dalam kes ini, 66 00:03:05,490 --> 00:03:08,360 berkata, hello dunia, hello dunia, hello dunia, hello dunia. 67 00:03:08,360 --> 00:03:10,350 Jadi ia adalah gelung tak terhingga oleh reka bentuk. 68 00:03:10,350 --> 00:03:14,580 >> Dalam C, jika kita ingin melaksanakan ini Idea yang sama, kita hanya boleh melakukan ini. 69 00:03:14,580 --> 00:03:19,570 Walaupun benar, printf hello world-- sekarang manakala, hanya semantik, jenis 70 00:03:19,570 --> 00:03:23,090 arwah idea melakukan sesuatu sekali lagi, dan sekali lagi, dan sekali lagi, 71 00:03:23,090 --> 00:03:23,980 dan untuk berapa lama? 72 00:03:23,980 --> 00:03:27,990 Nah, ingat true-- yang benar hanya di atas atau satu. 73 00:03:27,990 --> 00:03:30,660 >> Dan yang benar adalah, sudah tentu, sentiasa benar. 74 00:03:30,660 --> 00:03:33,060 Jadi ia adalah jenis yang tidak bermakna kenyataan hanya untuk mengatakan benar. 75 00:03:33,060 --> 00:03:36,890 Tetapi sesungguhnya, ini adalah sengaja, kerana jika benar adalah hanya sentiasa benar, 76 00:03:36,890 --> 00:03:40,850 daripada manakala benar hanya membayangkan, jika sedikit tidak langsung, 77 00:03:40,850 --> 00:03:44,070 bahawa garis-garis kod berikut di antara orang-orang pendakap kerinting 78 00:03:44,070 --> 00:03:48,320 hanya perlu melaksanakan sekali lagi, dan sekali lagi, dan sekali lagi, dan tidak pernah benar-benar berhenti. 79 00:03:48,320 --> 00:03:50,230 >> Tetapi jika anda mahu anda gelung untuk berhenti, seperti yang kita 80 00:03:50,230 --> 00:03:54,500 lakukan masa lalu dengan sesuatu seperti ini, mengulangi mengikuti 50 kali, 81 00:03:54,500 --> 00:03:57,700 dalam C kita boleh melakukan perkara yang sama dengan apa yang dipanggil untuk loop-- kata kunci 82 00:03:57,700 --> 00:03:59,330 yang bukan sementara, tetapi untuk. 83 00:03:59,330 --> 00:04:03,290 Dan kemudian kita mempunyai beberapa sintaks baru di sini, dengan int i sama dengan 0, i kurang daripada 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Dan kami akan kembali kepada itu. 86 00:04:05,430 --> 00:04:09,660 Tetapi ini adalah semata-mata bagaimana kita akan menterjemahkan set blok Scratch 87 00:04:09,660 --> 00:04:13,079 kepada satu set garis C kod. 88 00:04:13,079 --> 00:04:14,450 >> Sementara itu, pertimbangkan pembolehubah. 89 00:04:14,450 --> 00:04:16,540 Dan, sebenarnya, kita hanya melihat seorang sebentar tadi. 90 00:04:16,540 --> 00:04:21,220 Dan dalam kes Scratch, jika kita mahu mengisytiharkan pembolehubah yang dipanggil i 91 00:04:21,220 --> 00:04:24,590 untuk i sebagai integer, hanya nombor, dan kami mahu menetapkan ia untuk beberapa nilai, 92 00:04:24,590 --> 00:04:28,410 kita akan menggunakan oren ini menyekat sini-- menetapkan i kepada 0. 93 00:04:28,410 --> 00:04:30,800 >> Dan kita akan melihat hari ini dan di luar, sama seperti minggu lepas, 94 00:04:30,800 --> 00:04:33,850 pengaturcara melakukan hampir sentiasa mula mengira dari sifar, benar-benar 95 00:04:33,850 --> 00:04:34,950 oleh konvensyen. 96 00:04:34,950 --> 00:04:37,250 Tetapi juga kerana ingat dari perbincangan kita tentang binari, 97 00:04:37,250 --> 00:04:39,990 nombor yang paling kecil yang anda boleh mewakili dengan apa-apa bilangan bit 98 00:04:39,990 --> 00:04:41,640 hanya akan menjadi 0 sendiri. 99 00:04:41,640 --> 00:04:45,190 Dan supaya kita biasanya akan mula Memulakan walaupun pembolehubah kami kepada 0. 100 00:04:45,190 --> 00:04:47,710 >> Dan dalam C untuk melakukan perkara yang sama, kita akan mengatakan int 101 00:04:47,710 --> 00:04:50,110 untuk integer, i hanya dengan konvensyen. 102 00:04:50,110 --> 00:04:53,390 Saya boleh dipanggil pembolehubah ini apa-apa yang saya mahu, seperti dalam Scratch. 103 00:04:53,390 --> 00:04:57,770 Dan kemudian bersamaan dengan 0 hanya penerima serah hak nilai 0 dari kanan 104 00:04:57,770 --> 00:05:01,319 dan meletakkan ia ke dalam pembolehubah, atau bekas penyimpanan di sana, di sebelah kiri. 105 00:05:01,319 --> 00:05:04,360 Dan koma bertitik seperti yang kita akan see-- dan kita telah melihat beberapa already-- ini 106 00:05:04,360 --> 00:05:06,530 hanya bermakna akhir pemikiran. 107 00:05:06,530 --> 00:05:09,430 Meneruskan untuk melakukan sesuatu yang lain di barisan yang mengikuti. 108 00:05:09,430 --> 00:05:11,330 >> Sekarang, bagaimana pula dengan ungkapan Boolean? 109 00:05:11,330 --> 00:05:14,320 Ingat bahawa dalam Scratch, ini adalah ungkapan 110 00:05:14,320 --> 00:05:16,740 yang sama ada benar atau soalan false--, 111 00:05:16,740 --> 00:05:18,910 benar-benar, yang sama ada benar atau palsu. 112 00:05:18,910 --> 00:05:21,960 Jadi dalam kes Awal, kita mungkin bertanya satu soalan yang mudah seperti ini, 113 00:05:21,960 --> 00:05:24,586 adalah i kurang daripada 50? 114 00:05:24,586 --> 00:05:25,710 Jadi saya, sekali lagi, adalah integer. 115 00:05:25,710 --> 00:05:27,210 Mungkin kita menggunakannya dalam program Scratch 116 00:05:27,210 --> 00:05:29,310 untuk mengesan skor yang atau sesuatu seperti itu. 117 00:05:29,310 --> 00:05:33,810 Jadi sintaks ini di sini dalam Scratch hanya bermakna, adalah i kurang daripada 50? 118 00:05:33,810 --> 00:05:37,330 Well, bersyukur, sesuatu yang tidak mudah dalam C. Dan untuk menterjemah, 119 00:05:37,330 --> 00:05:41,780 ini kita hanya akan berkata i kurang daripada 50, dengan menggunakan kunci biasa 120 00:05:41,780 --> 00:05:42,850 pada papan kekunci anda. 121 00:05:42,850 --> 00:05:45,141 >> Sementara itu, jika anda mahu mengatakan sesuatu yang lebih umum, 122 00:05:45,141 --> 00:05:49,890 seperti, baik, adalah x kurang daripada y di mana setiap x dan y adalah diri mereka pembolehubah? 123 00:05:49,890 --> 00:05:52,280 Kita boleh melakukan perkara yang sama dalam C, selagi kita ada 124 00:05:52,280 --> 00:05:53,942 dicipta pembolehubah ini sudah. 125 00:05:53,942 --> 00:05:55,650 Dan kita akan melihat bagaimana untuk berbuat demikian tidak lama lagi. 126 00:05:55,650 --> 00:05:58,590 Kami hanya akan mengatakan x kurang daripada y. 127 00:05:58,590 --> 00:06:00,530 >> Jadi anda mula melihat beberapa persamaan. 128 00:06:00,530 --> 00:06:03,490 Dan orang-orang yang membuat Scratch sudah tentu 129 00:06:03,490 --> 00:06:05,250 diilhamkan oleh beberapa idea-idea asas. 130 00:06:05,250 --> 00:06:10,350 Dan anda akan melihat jenis ini sintaks dalam banyak languages-- 131 00:06:10,350 --> 00:06:12,160 bukan hanya Scratch, tidak hanya C, tetapi Python, 132 00:06:12,160 --> 00:06:14,790 dan JavaScript, dan bahasa lain masih. 133 00:06:14,790 --> 00:06:18,270 >> Mari kita pertimbangkan konstruk lain daripada C, tanggapan keadaan, 134 00:06:18,270 --> 00:06:20,370 melakukan sesuatu yang bersyarat. 135 00:06:20,370 --> 00:06:22,720 Jika ada sesuatu yang benar, melakukan ini. 136 00:06:22,720 --> 00:06:24,457 Jika sesuatu yang lain adalah benar, berbuat demikian. 137 00:06:24,457 --> 00:06:27,040 Ia semacam pengaturcaraan bersamaan dengan garpu di jalan raya. 138 00:06:27,040 --> 00:06:29,730 Mungkin ia adalah dua hala garpu, tiga hala garpu, atau lebih. 139 00:06:29,730 --> 00:06:32,800 Dan dalam Scratch, kita mungkin mempunyai melihat sesuatu seperti ini. 140 00:06:32,800 --> 00:06:34,010 >> Jadi yang satu ini adalah satu besar. 141 00:06:34,010 --> 00:06:36,750 Tetapi dengan menimbangkan relatif kesederhanaan logik. 142 00:06:36,750 --> 00:06:44,010 Jika x kurang daripada y, maka katakanlah x kurang daripada y, lain jika x lebih besar daripada y, 143 00:06:44,010 --> 00:06:46,230 maka katakanlah x lebih besar daripada y. 144 00:06:46,230 --> 00:06:48,300 Dan kemudian, secara logiknya, jika anda berfikir kembali kepada Scratch 145 00:06:48,300 --> 00:06:52,610 atau hanya gerak hati manusia anda sendiri, baik, jika x tidak lebih besar daripada y, dan x 146 00:06:52,610 --> 00:06:57,000 tidak kurang daripada y, maka sudah tentu x akan sama dengan y. 147 00:06:57,000 --> 00:06:59,690 Jadi dalam kes ini, oleh bersarang orang-orang blok Awal, 148 00:06:59,690 --> 00:07:02,580 kita boleh mencapai tiga cara garpu di jalan raya? 149 00:07:02,580 --> 00:07:04,980 >> Sementara itu, jika kita mahu melakukannya dalam C, ia boleh dikatakan 150 00:07:04,980 --> 00:07:08,420 kelihatan simpler-- sedikit sekurang-kurangnya sebaik sahaja anda mendapatkan biasa dengan sintaks. 151 00:07:08,420 --> 00:07:12,050 Jika x kurang daripada y, printf x kurang daripada y. 152 00:07:12,050 --> 00:07:16,140 Lain jika x lebih besar daripada y, printf x lebih besar daripada y. 153 00:07:16,140 --> 00:07:21,210 Else printf x adalah sama dengan y-- dan, sekali lagi, dengan orang-orang garis sendeng terbalik berakhir hanya 154 00:07:21,210 --> 00:07:24,160 bagi mereka barisan baru supaya jika anda sebenarnya berlari jenis ini program 155 00:07:24,160 --> 00:07:25,940 ia hanya akan bergerak kursor anda akhirnya 156 00:07:25,940 --> 00:07:28,100 ke baris seterusnya skrin. 157 00:07:28,100 --> 00:07:31,270 >> Sekarang, sementara itu Scratch memperanakkan ciri yang lebih canggih, hanya 158 00:07:31,270 --> 00:07:34,320 ada yang kita akan pada mulanya bergerak ke dunia C. 159 00:07:34,320 --> 00:07:37,010 Dan salah seorang daripada mereka adalah dipanggil senarai dalam Scratch. 160 00:07:37,010 --> 00:07:39,100 Dan ini adalah khas jenis pembolehubah yang 161 00:07:39,100 --> 00:07:42,840 dibenarkan anda untuk menyimpan pelbagai perkara di dalamnya belakang, ke belakang, ke belakang, ke belakang. 162 00:07:42,840 --> 00:07:45,540 >> Dalam C, ia tidak mempunyai senarai, per se, tetapi sesuatu 163 00:07:45,540 --> 00:07:48,090 yang lebih umum dipanggil array, walaupun kami 164 00:07:48,090 --> 00:07:50,590 kembali kemudian semester ini untuk melihat sesuatu 165 00:07:50,590 --> 00:07:52,780 dipanggil senarai, atau benar-benar senarai berpaut. 166 00:07:52,780 --> 00:07:55,510 Tetapi untuk sekarang, yang paling dekat setara dalam C untuk kita 167 00:07:55,510 --> 00:07:57,345 akan menjadi sesuatu dipanggil array. 168 00:07:57,345 --> 00:07:59,740 Dan lokasi yang hanya satu jenis khas berubah-ubah 169 00:07:59,740 --> 00:08:03,160 yang membolehkan anda untuk menyimpan data belakang, ke belakang, ke belakang, ke belakang. 170 00:08:03,160 --> 00:08:05,840 >> Dan, sememangnya, dalam Scratch, jika kita mahu untuk mengakses 171 00:08:05,840 --> 00:08:09,030 elemen pertama array atau yang list-- dan saya akan memanggilnya, 172 00:08:09,030 --> 00:08:13,600 oleh konvensyen, argv, hujah vektor, tetapi lebih kepada yang tidak lama lagi. 173 00:08:13,600 --> 00:08:17,090 Jika saya mahu untuk mendapatkan sekurang-elemen pertama argv, dalam dunia Scratch 174 00:08:17,090 --> 00:08:20,930 anda sebenarnya melakukan biasanya mula mengira dari 1. 175 00:08:20,930 --> 00:08:22,850 >> Oleh itu, saya mungkin akan mendapat item 1 argv. 176 00:08:22,850 --> 00:08:26,310 Itu hanya bagaimana MIT dilaksanakan tanggapan senarai. 177 00:08:26,310 --> 00:08:29,860 Tetapi dalam C, saya akan lebih mudah hanya berkata, argv, 178 00:08:29,860 --> 00:08:32,758 yang sekali lagi adalah nama saya list-- atau perlu jelas, array. 179 00:08:32,758 --> 00:08:34,549 Dan jika saya mahu pertama unsur-unsur, saya akan 180 00:08:34,549 --> 00:08:37,890 menggunakan tanda kurung siku, yang anda mungkin tidak sering digunakan di bawah papan kekunci. 181 00:08:37,890 --> 00:08:40,150 >> Tetapi 0 hanya bermakna, dapatkan saya yang pertama. 182 00:08:40,150 --> 00:08:42,160 Maka pada kesempatan dan sebagai masa berlalu, kita akan 183 00:08:42,160 --> 00:08:44,570 untuk mula melihat dikotomi ini antara Gores dan C, 184 00:08:44,570 --> 00:08:46,070 mana Scratch menggunakannya. 185 00:08:46,070 --> 00:08:47,670 Kami di C menggunakan 0 di sini. 186 00:08:47,670 --> 00:08:49,420 Tetapi anda akan melihat dengan cepat sebaik sahaja anda memahami 187 00:08:49,420 --> 00:08:52,920 asas-asas setiap bahasa, yang perkara-perkara ini mula mendapat semua lebih 188 00:08:52,920 --> 00:08:56,860 biasa melalui amalan dan amalan. 189 00:08:56,860 --> 00:08:59,700 >> Jadi mari kita sebenarnya melihat di program. 190 00:08:59,700 --> 00:09:04,031 Di sini akan menjadi yang pertama C kami Kod sumber untuk program lengkap. 191 00:09:04,031 --> 00:09:06,280 Dan program ini kita akan untuk menawarkan untuk pertimbangan 192 00:09:06,280 --> 00:09:09,340 adalah salah satu yang bersamaan untuk sekeping Scratch lebih awal. 193 00:09:09,340 --> 00:09:13,210 >> Jadi di sini, kita mempunyai apa yang boleh dikatakan program C yang paling mudah 194 00:09:13,210 --> 00:09:15,410 anda boleh menulis bahawa sebenarnya melakukan sesuatu. 195 00:09:15,410 --> 00:09:18,250 Sekarang, kita akan melihat masa lalu, buat masa ini, telah termasuk, 196 00:09:18,250 --> 00:09:21,190 io.h standard, dan sudut ini kurungan, dan int, dan tidak sah, 197 00:09:21,190 --> 00:09:22,840 dan pendakap kerinting, dan sebagainya. 198 00:09:22,840 --> 00:09:25,390 >> Dan mari kita hanya memberi tumpuan kepada apa, sekurang-kurangnya secara intuitif, 199 00:09:25,390 --> 00:09:26,860 mungkin melompat keluar pada anda sudah. 200 00:09:26,860 --> 00:09:30,300 Malah, utama, saya tidak semestinya tahu apa ini, 201 00:09:30,300 --> 00:09:34,580 tetapi sama seperti Scratch mempunyai bahawa apabila bendera hijau diklik sekeping teka-teki, 202 00:09:34,580 --> 00:09:39,070 begitu juga C sebagai bahasa pengaturcaraan mempunyai sebidang utama kod yang 203 00:09:39,070 --> 00:09:43,380 mendapat dilaksanakan secara lalai. Dan, sememangnya, ia secara literal akan dipanggil utama. 204 00:09:43,380 --> 00:09:44,720 >> Jadi utama adalah fungsi. 205 00:09:44,720 --> 00:09:48,720 Dan ia adalah satu majlis khas yang wujud dalam C yang apabila anda menjalankan program, 206 00:09:48,720 --> 00:09:52,720 ia adalah utama yang mendapat dikendalikan oleh lalai. Dalam dunia Awal, 207 00:09:52,720 --> 00:09:56,970 ia biasanya apabila bendera hijau klik yang tidak perlu lagi berjalan secara lalai. 208 00:09:56,970 --> 00:10:01,130 >> Sementara itu, kita lihat sebelum ini, printf atau cetakan diformat, itu 209 00:10:01,130 --> 00:10:05,620 akan menjadi satu fungsi yang datang dengan C, bersama-sama dengan sejumlah besar orang lain, 210 00:10:05,620 --> 00:10:10,140 bahawa kehendak dari semasa dan masa lagi, untuk melakukan perkara 211 00:10:10,140 --> 00:10:12,450 seperti namanya, mencetak sesuatu. 212 00:10:12,450 --> 00:10:13,500 Apa yang kita mahu untuk mencetak? 213 00:10:13,500 --> 00:10:15,770 Nah, kita akan melihat bahawa oleh watak-watak melampirkan 214 00:10:15,770 --> 00:10:18,680 seperti these-- dunia hello, garis sendeng terbalik n dalam tanda petik, 215 00:10:18,680 --> 00:10:23,040 kita boleh memberitahu printf tepat apa untuk mencetak pada skrin. 216 00:10:23,040 --> 00:10:26,430 >> Tetapi untuk melakukan itu, kita malangnya 217 00:10:26,430 --> 00:10:30,010 perlu sesuatu yang sudah samar kepada kita manusia, 218 00:10:30,010 --> 00:10:34,510 tetapi sekurang-kurangnya ia agak readable-- tajam termasuk, io.h standard, int, 219 00:10:34,510 --> 00:10:39,340 utama, tidak sah, printf, semua ajaib jampi kita hanya melihat pada skrin. 220 00:10:39,340 --> 00:10:42,470 Tetapi kita sebenarnya perlu pergi lebih sukar difahami masih. 221 00:10:42,470 --> 00:10:47,140 Mula-mula kita perlu untuk menterjemahkan kod di kita harus menulis surat kepada kod mesin. 222 00:10:47,140 --> 00:10:51,370 Dan ingat dari minggu lepas bahawa mesin, sekurang-kurangnya orang-orang yang kita kenali di sini, 223 00:10:51,370 --> 00:10:54,450 pada akhir hari sahaja memahami sifar dan satu. 224 00:10:54,450 --> 00:10:58,100 >> Allahku, jika kita terpaksa menulis ini sifar dan orang-orang yang sebenarnya program, 225 00:10:58,100 --> 00:11:01,260 ia akan sangat, sangat cepat mengambil keseronokan daripada apa-apa. 226 00:11:01,260 --> 00:11:05,150 Tetapi ternyata, seminggu lalu, bahawa corak sifar dan satu 227 00:11:05,150 --> 00:11:06,400 hanya mempunyai makna khas. 228 00:11:06,400 --> 00:11:08,500 Dalam konteks yang tertentu, mereka mungkin bermakna nombor. 229 00:11:08,500 --> 00:11:11,840 >> Dalam sesetengah konteks, ia mungkin bermakna huruf, atau warna, atau apa-apa bilangan 230 00:11:11,840 --> 00:11:14,710 daripada abstrak lain di sana atas. 231 00:11:14,710 --> 00:11:18,450 Tetapi hanya kerana komputer anda mempunyai CPU, Unit Pemprosesan Pusat, 232 00:11:18,450 --> 00:11:20,390 atau otak dalam komputer anda. 233 00:11:20,390 --> 00:11:22,240 Ia biasanya Intel di dalam, kerana itulah 234 00:11:22,240 --> 00:11:24,900 salah satu daripada syarikat terbesar yang membuat CPU untuk komputer. 235 00:11:24,900 --> 00:11:28,910 >> Well, CPU Intel dan lain-lain hanya telah membuat keputusan lebih awal 236 00:11:28,910 --> 00:11:33,970 bahawa corak tertentu sifar dan yang bermaksud perkara-perkara tertentu. 237 00:11:33,970 --> 00:11:37,040 corak tertentu sifar dan satu bermakna, mencetak ini kepada skrin, 238 00:11:37,040 --> 00:11:39,710 atau menambah dua nombor, atau tolak dua nombor, 239 00:11:39,710 --> 00:11:43,310 atau memindahkan sekeping data dari memori komputer saya di sini, 240 00:11:43,310 --> 00:11:47,870 atau apa-apa bilangan tahap yang sangat rendah yang lain, tetapi akhirnya berguna, operasi. 241 00:11:47,870 --> 00:11:53,022 Tetapi, bersyukur, kita manusia tidak akan untuk perlu tahu tahap ini lanjut. 242 00:11:53,022 --> 00:11:56,230 Malah, sama seperti masa lalu, di mana kita cabutan lagi, dan lagi, dan lagi, 243 00:11:56,230 --> 00:11:58,930 bangunan daripada tahap yang sangat rendah primitif seperti sifar dan satu 244 00:11:58,930 --> 00:12:01,160 kepada konsep tahap yang lebih tinggi seperti nombor dan huruf, 245 00:12:01,160 --> 00:12:04,330 dan warna, dan banyak lagi, supaya boleh kita sebagai pengaturcara 246 00:12:04,330 --> 00:12:07,080 berdiri di atas bahu orang lain yang datang sebelum kita 247 00:12:07,080 --> 00:12:11,260 dan menggunakan perisian yang lain penulis telah menulis sebelum us-- 248 00:12:11,260 --> 00:12:14,340 iaitu program yang dikenali sebagai penyusun. 249 00:12:14,340 --> 00:12:17,770 >> C ialah bahasa yang biasanya disusun, 250 00:12:17,770 --> 00:12:22,130 yang bermaksud ditukar dari kod sumber kepada kod mesin. 251 00:12:22,130 --> 00:12:25,230 Khususnya, apa yang dimaksudkan adalah bahawa jika anda mempunyai sumber anda 252 00:12:25,230 --> 00:12:29,530 Kod yang anda sendiri menulis, kerana kita tidak lama lagi akan dalam hanya seketika pada skrin, 253 00:12:29,530 --> 00:12:33,140 dan anda mahu menukar akhirnya untuk mesin code-- 254 00:12:33,140 --> 00:12:37,100 orang-orang sifar dan orang-orang yang hanya Mac atau PC anda 255 00:12:37,100 --> 00:12:41,230 understands-- anda telah mendapat pertama memberi makan kepada kod sumber sebagai 256 00:12:41,230 --> 00:12:46,340 input kepada yang istimewa program dipanggil pengkompil, 257 00:12:46,340 --> 00:12:48,974 output yang mana kami akan lihat adalah kod mesin. 258 00:12:48,974 --> 00:12:51,890 Dan, sememangnya, kali terakhir kita bercakap kira-kira, benar-benar, pada akhir hari, 259 00:12:51,890 --> 00:12:52,610 penyelesaian masalah. 260 00:12:52,610 --> 00:12:53,360 Anda telah mendapat input. 261 00:12:53,360 --> 00:12:54,318 Dan anda telah mendapat output. 262 00:12:54,318 --> 00:12:56,560 Dan anda telah mendapat beberapa jenis algoritma di tengah-tengah. 263 00:12:56,560 --> 00:12:59,830 >> Algoritma pasti boleh menjadi dilaksanakan dalam perisian, 264 00:12:59,830 --> 00:13:02,900 seperti yang kita lihat dengan kod pseudo minggu lepas dan seperti yang kita akan lihat dengan kod sebenar 265 00:13:02,900 --> 00:13:03,490 minggu ini. 266 00:13:03,490 --> 00:13:06,430 Dan supaya pengkompil benar-benar hanya mempunyai satu set algoritma dalam 267 00:13:06,430 --> 00:13:10,060 itu yang tahu bagaimana untuk menukar kata kunci khas, 268 00:13:10,060 --> 00:13:12,180 seperti utama, dan printf, dan lain-lain yang kita hanya 269 00:13:12,180 --> 00:13:17,620 melihat ke dalam corak sifar dan orang-orang yang Intel dalam dan lain CPU 270 00:13:17,620 --> 00:13:20,020 sebenarnya memahami. 271 00:13:20,020 --> 00:13:22,460 Jadi bagaimana kita melakukan ini? 272 00:13:22,460 --> 00:13:24,470 Di mana kita mendapatkan pengkompil? 273 00:13:24,470 --> 00:13:26,400 >> Sebahagian besar daripada kita di sini mempunyai Mac atau PC. 274 00:13:26,400 --> 00:13:29,152 Dan anda menjalankan Mac OS, atau Windows atau Linux, atau Solaris, 275 00:13:29,152 --> 00:13:30,860 atau apa-apa bilangan lain sistem operasi. 276 00:13:30,860 --> 00:13:32,568 Dan, sememangnya, kita boleh pergi keluar ke web 277 00:13:32,568 --> 00:13:35,710 dan muat turun pengkompil untuk Mac anda atau PC anda 278 00:13:35,710 --> 00:13:37,360 untuk sistem operasi tertentu anda. 279 00:13:37,360 --> 00:13:39,617 Tetapi kita semua akan berada di muka surat yang berbeza, jadi untuk bercakap. 280 00:13:39,617 --> 00:13:41,450 Kita akan mempunyai sedikit konfigurasi yang berlainan. 281 00:13:41,450 --> 00:13:43,210 Dan apa yang akan berhasil semua yang sama. 282 00:13:43,210 --> 00:13:45,280 Dan sesungguhnya, hari ini ramai di antara kita tidak menggunakan 283 00:13:45,280 --> 00:13:47,516 perisian yang berjalan hanya pada komputer riba kami. 284 00:13:47,516 --> 00:13:49,390 Sebaliknya, kita menggunakan sesuatu seperti pelayar yang 285 00:13:49,390 --> 00:13:52,930 membolehkan kita untuk mengakses web berasaskan aplikasi dalam awan. 286 00:13:52,930 --> 00:13:55,630 Dan kemudian semester ini, kami akan melakukan perkara tersebut. 287 00:13:55,630 --> 00:13:59,660 Kami akan menulis aplikasi atau perisian tidak menggunakan code-- C, 288 00:13:59,660 --> 00:14:02,860 tetapi bahasa lain seperti Python dan JavaScript-- yang berjalan di awan. 289 00:14:02,860 --> 00:14:05,860 >> Dan untuk berbuat demikian, kita sendiri pada semester 290 00:14:05,860 --> 00:14:11,890 sebenarnya akan menggunakan awan berasaskan persekitaran dikenali sebagai CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 Ini adalah program berasaskan web alam sekitar, atau pembangunan bersepadu 292 00:14:16,030 --> 00:14:20,610 alam sekitar, IDE, yang dibina di atas beberapa perisian sumber terbuka yang dikenali sebagai Cloud 9. 293 00:14:20,610 --> 00:14:22,966 Dan kita telah membuat beberapa pedagogi pemudahan kepadanya 294 00:14:22,966 --> 00:14:25,840 supaya dapat menyembunyikan ciri-ciri tertentu dalam minggu-minggu pertama yang kita tidak perlu, 295 00:14:25,840 --> 00:14:27,770 selepas itu anda boleh mendedahkan mereka dan melakukan kebanyakan 296 00:14:27,770 --> 00:14:29,400 apa sahaja yang anda mahu dengan alam sekitar. 297 00:14:29,400 --> 00:14:32,470 >> Dan ia membolehkan kita, juga, untuk sebelum memasang perisian tertentu. 298 00:14:32,470 --> 00:14:35,330 Perkara seperti apa yang dipanggil CS50 perpustakaan, yang kita tidak lama lagi akan melihat 299 00:14:35,330 --> 00:14:39,210 menyediakan kami dalam C dengan beberapa fungsi tambahan. 300 00:14:39,210 --> 00:14:44,392 Jadi, jika anda pergi ke akhirnya CS50.io, anda akan digesa untuk log masuk, 301 00:14:44,392 --> 00:14:46,350 dan sebaik sahaja anda lakukan dan mewujudkan akaun secara percuma, 302 00:14:46,350 --> 00:14:52,150 anda akan dapat untuk mengakses yang persekitaran yang kelihatan agak seperti ini. 303 00:14:52,150 --> 00:14:53,760 >> Sekarang, ini adalah dalam mod lalai. 304 00:14:53,760 --> 00:14:55,650 Segala-galanya adalah baik dan terang pada skrin. 305 00:14:55,650 --> 00:14:57,941 Ramai di antara kita mempunyai tabiat bekerja di atas sekeping CS50 itulah 306 00:14:57,941 --> 00:14:59,150 agak lewat malam. 307 00:14:59,150 --> 00:15:02,400 Dan supaya sebahagian daripada anda mungkin lebih suka untuk mengubahnya menjadi mod malam, jadi untuk bercakap. 308 00:15:02,400 --> 00:15:05,550 >> Tetapi, akhirnya, apa yang anda akan melihat dalam CS50 IDE 309 00:15:05,550 --> 00:15:08,340 adalah tiga areas-- berbeza kawasan di mana sebelah kiri 310 00:15:08,340 --> 00:15:12,604 fail anda akan berada di dalam awan, kawasan di sebelah kanan atas 311 00:15:12,604 --> 00:15:14,270 di mana kod anda akan menjadi disunting. 312 00:15:14,270 --> 00:15:16,650 Anda akan dapat untuk membuka tab individu untuk mana-mana program 313 00:15:16,650 --> 00:15:19,670 yang anda tulis semester ini di dalam itu bahagian atas sebelah kanan. 314 00:15:19,670 --> 00:15:23,070 Dan kemudian paling arcanely, dan lagi kuat, 315 00:15:23,070 --> 00:15:26,610 akan menjadi perkara ini di bawah dikenali sebagai tetingkap terminal. 316 00:15:26,610 --> 00:15:29,450 >> Ini adalah sekolah lama Line Interface perintah, 317 00:15:29,450 --> 00:15:32,240 atau CLI, yang membolehkan anda untuk melaksanakan arahan 318 00:15:32,240 --> 00:15:35,260 pada computer-- dalam kes ini, komputer dalam cloud-- 319 00:15:35,260 --> 00:15:39,090 untuk melakukan perkara seperti menyusun kod anda dari kod sumber kepada kod mesin, 320 00:15:39,090 --> 00:15:43,600 untuk menjalankan program anda, atau untuk memulakan anda pelayan web, atau untuk mengakses pangkalan data anda, 321 00:15:43,600 --> 00:15:47,454 dan apa-apa bilangan teknik-teknik lain bahawa kita akan mula menggunakan tidak lama lagi. 322 00:15:47,454 --> 00:15:49,370 Tetapi untuk sampai ke sana, kami akan benar-benar mempunyai 323 00:15:49,370 --> 00:15:51,240 untuk pergi ke dalam talian dan mula bermain. 324 00:15:51,240 --> 00:15:54,399 Dan untuk itu, mari kita pertama mula tinkering dengan utama, 325 00:15:54,399 --> 00:15:55,940 dan menulis bahagian utama program. 326 00:15:55,940 --> 00:15:59,170 Dan mari kita menggunakan fungsi yang printf, yang kita digunakan sebelum ini, 327 00:15:59,170 --> 00:16:01,050 semata-mata untuk mengatakan sesuatu. 328 00:16:01,050 --> 00:16:04,910 >> Jadi di sini saya sudah di dalam CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Saya sudah log masuk terlebih dahulu. 330 00:16:05,930 --> 00:16:07,360 Dan saya penuh ditayangkan tingkap. 331 00:16:07,360 --> 00:16:09,670 Dan sebagainya, akhirnya, anda terlalu dalam masalah akan datang 332 00:16:09,670 --> 00:16:12,960 akan mengikuti langkah yang sama yang akan menyediakan dokumentasi dalam talian. 333 00:16:12,960 --> 00:16:16,360 Jadi anda tidak perlu bimbang tentang menyerap setiap langkah teknikal sedikit 334 00:16:16,360 --> 00:16:17,730 yang saya lakukan di sini hari ini. 335 00:16:17,730 --> 00:16:19,222 >> Tetapi anda akan mendapat skrin seperti ini. 336 00:16:19,222 --> 00:16:20,430 Saya berada dalam mod malam. 337 00:16:20,430 --> 00:16:22,944 Dan anda boleh mencerahkan segala-galanya sehingga dengan mematikan mod malam. 338 00:16:22,944 --> 00:16:24,860 Dan pada akhir hari, anda akan melihat 339 00:16:24,860 --> 00:16:30,090 tiga utama areas-- fail pelayar di sebelah kiri, tab kod sehingga atas, 340 00:16:30,090 --> 00:16:32,430 dan tetingkap terminal di bahagian bawah. 341 00:16:32,430 --> 00:16:34,890 >> Biar saya pergi ke hadapan dan menulis program pertama saya. 342 00:16:34,890 --> 00:16:42,300 Saya akan preemptively pergi ke Fail, Menyimpan, dan simpan fail saya sebagai hello.c. 343 00:16:42,300 --> 00:16:46,850 Malah, oleh konvensyen, apa-apa program yang kita menulis yang ditulis dalam bahasa C 344 00:16:46,850 --> 00:16:49,739 patut dinamakan sesuatu dot c, oleh konvensyen. 345 00:16:49,739 --> 00:16:53,030 Jadi saya akan menamakannya hello.c, kerana Saya hanya mahu mengucapkan salam kepada dunia. 346 00:16:53,030 --> 00:16:54,820 Sekarang saya akan untuk zum keluar dan klik Simpan. 347 00:16:54,820 --> 00:16:58,180 Dan semua saya ada di sini sekarang ialah tab di mana saya boleh mula kod menulis. 348 00:16:58,180 --> 00:16:59,490 >> Ini tidak akan menyusun. 349 00:16:59,490 --> 00:17:00,300 Ini bermakna apa-apa. 350 00:17:00,300 --> 00:17:02,750 Dan sebagainya walaupun saya ditukar ini kepada sifar dan satu, 351 00:17:02,750 --> 00:17:05,390 CPU akan tidak mempunyai idea apa yang berlaku di sekeliling. 352 00:17:05,390 --> 00:17:14,170 Tetapi jika saya menulis ayat yang tidak sepadan perkembangan C makhluk conventions-- C, 353 00:17:14,170 --> 00:17:20,150 sekali lagi, ini language-- dengan sintaks seperti ini, printf hello world-- dan saya telah 354 00:17:20,150 --> 00:17:22,210 mendapat selesa dengan melakukan ini dari masa ke masa. 355 00:17:22,210 --> 00:17:24,510 Jadi, saya tidak rasa saya membuat sebarang kesilapan tipografi. 356 00:17:24,510 --> 00:17:27,910 >> Tetapi, setiap kali, yang pertama kali anda melakukan ini, anda akan. 357 00:17:27,910 --> 00:17:31,090 Dan apa yang saya kira-kira untuk melakukan mungkin sangat baik tidak bekerja untuk anda kali pertama. 358 00:17:31,090 --> 00:17:33,610 Dan itu sempurna OK, kerana sekarang anda 359 00:17:33,610 --> 00:17:37,662 hanya mungkin melihat banyak keseluruhan kebaharuan, tetapi dari masa ke masa apabila anda membiasakan diri 360 00:17:37,662 --> 00:17:39,870 dengan persekitaran ini, dan bahasa ini, dan lain-lain, 361 00:17:39,870 --> 00:17:42,370 anda akan mula melihat perkara-perkara yang sama ada betul atau tidak betul. 362 00:17:42,370 --> 00:17:44,369 >> Dan ini adalah apa yang felo pengajaran dan kursus 363 00:17:44,369 --> 00:17:48,780 pembantu mendapatkan begitu baik pada masa ke masa, adalah mengesan kesilapan atau pepijat dalam kod anda. 364 00:17:48,780 --> 00:17:52,110 Tetapi saya mendakwa bahawa terdapat ada bug dalam kod ini. 365 00:17:52,110 --> 00:17:53,990 Jadi saya kini mahu menjalankan program ini. 366 00:17:53,990 --> 00:17:57,440 >> Sekarang pada Mac saya sendiri atau PC, saya dalam tabiat ikon klik dua kali 367 00:17:57,440 --> 00:17:59,350 apabila saya ingin menjalankan beberapa program. 368 00:17:59,350 --> 00:18:01,080 Tetapi itu bukan model itu di sini. 369 00:18:01,080 --> 00:18:04,570 Dalam persekitaran ini, yang CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Kami menggunakan operasi yang sistem dipanggil Linux. 371 00:18:07,192 --> 00:18:09,900 Linux mengingatkan lain sistem operasi, umumnya dikenali 372 00:18:09,900 --> 00:18:10,850 sebagai Unix. 373 00:18:10,850 --> 00:18:16,340 Dan Linux adalah terutamanya terkenal dengan mempunyai satu line Alam Sekitar Command, CLI. 374 00:18:16,340 --> 00:18:20,070 Sekarang, kita menggunakan tertentu yang rasa Linux dipanggil Ubuntu. 375 00:18:20,070 --> 00:18:22,770 Dan Ubuntu hanya satu versi tertentu Linux. 376 00:18:22,770 --> 00:18:27,900 >> Tetapi hari ini ini Linux buat sebenarnya datang dengan antara muka pengguna grafik. 377 00:18:27,900 --> 00:18:30,360 Dan yang kita berlaku menggunakan di sini adalah berasaskan web. 378 00:18:30,360 --> 00:18:32,735 Jadi ini mungkin kelihatan walaupun sedikit berbeza daripada sesuatu 379 00:18:32,735 --> 00:18:35,310 anda sendiri mungkin mempunyai dilihat atau menjalankan pada masa lalu. 380 00:18:35,310 --> 00:18:37,910 >> Jadi, saya akan pergi ke hadapan sekarang dan melakukan yang berikut. 381 00:18:37,910 --> 00:18:40,950 Saya telah menyimpan fail ini sebagai hello.c. 382 00:18:40,950 --> 00:18:47,350 Saya akan pergi ke hadapan dan jenis clanghello.c Jadi dilafaz 383 00:18:47,350 --> 00:18:49,850 untuk bahasa C pengkompil. 384 00:18:49,850 --> 00:18:51,952 Ia diprapasang dalam CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Dan anda benar-benar boleh memuat turun dan memasang ini pada Mac anda sendiri atau PC. 386 00:18:54,910 --> 00:18:57,910 >> Tetapi, sekali lagi, anda tidak akan mempunyai semua pra-konfigurasi dilakukan untuk anda. 387 00:18:57,910 --> 00:19:00,940 Jadi buat masa ini, saya hanya akan berjalan clanghello.c. 388 00:19:00,940 --> 00:19:03,240 Dan kini melihat sintaks ini di sini akan akhirnya 389 00:19:03,240 --> 00:19:06,930 sedar hanya bermakna bahawa saya dalam satu folder atau direktori dipanggil Workspace. 390 00:19:06,930 --> 00:19:11,030 Ini tanda dolar hanya konvensyen makna, taipkan arahan di bandar. 391 00:19:11,030 --> 00:19:14,560 >> Ia adalah apa yang dipanggil segera, hanya oleh konvensyen adalah tanda dolar. 392 00:19:14,560 --> 00:19:19,130 Dan jika saya pergi ke hadapan sekarang dan klik Enter, tiada apa yang berlaku. 393 00:19:19,130 --> 00:19:20,930 Tetapi itu sebenarnya satu perkara yang baik. 394 00:19:20,930 --> 00:19:23,650 Yang kurang yang berlaku di skrin anda, semakin besar kemungkinan 395 00:19:23,650 --> 00:19:26,710 kod anda adalah sebagai betul, sekurang-kurangnya sintaksis. 396 00:19:26,710 --> 00:19:29,120 >> Jadi jika saya mahu menjalankan ini program, apa yang saya lakukan? 397 00:19:29,120 --> 00:19:33,770 Nah, ternyata bahawa nama lalai oleh konvensyen 398 00:19:33,770 --> 00:19:38,854 untuk program apabila anda tidak menentukan menamakan untuk program anda adalah hanya a.out. 399 00:19:38,854 --> 00:19:41,270 Dan sintaks ini juga, anda akan membiasakan diri dengan tidak lama lagi. 400 00:19:41,270 --> 00:19:47,500 >> Dot mengurangkan hanya bermakna, hey, CS50 IDE, menjalankan program yang dipanggil a.out 401 00:19:47,500 --> 00:19:49,400 yang di dalam direktori semasa saya. 402 00:19:49,400 --> 00:19:51,520 dot bermakna direktori semasa. 403 00:19:51,520 --> 00:19:55,040 Dan kita akan melihat apa yang lain seperti urutan aksara bermakna tidak lama lagi. 404 00:19:55,040 --> 00:19:58,430 >> Jadi di sini kita pergi, Masukkan, hello dunia. 405 00:19:58,430 --> 00:20:00,080 Dan anda akan melihat, apa yang berlaku? 406 00:20:00,080 --> 00:20:01,580 Bukan sahaja ia mencetak hello dunia. 407 00:20:01,580 --> 00:20:05,990 Ia juga berpindah kursor ke baris seterusnya. 408 00:20:05,990 --> 00:20:07,160 >> Dan mengapa itu? 409 00:20:07,160 --> 00:20:12,400 Apakah kod yang kita menulis sebelum yang memastikan kursor akan 410 00:20:12,400 --> 00:20:14,882 pergi pada baris berikutnya? 411 00:20:14,882 --> 00:20:16,840 Perkara yang melucukan tentang komputer adalah ia hanya akan 412 00:20:16,840 --> 00:20:18,570 lakukan betul-betul apa yang anda beritahu ia lakukan. 413 00:20:18,570 --> 00:20:26,050 >> Jadi, jika anda beritahu kepada printf hello, koma, ruang, dunia, quote dekat, 414 00:20:26,050 --> 00:20:29,090 ia secara literal hanya akan untuk mencetak mereka watak-watak. 415 00:20:29,090 --> 00:20:31,980 Tetapi saya mempunyai watak istimewa ini pada akhir, ingat, garis sendeng terbalik n. 416 00:20:31,980 --> 00:20:34,230 Dan itulah yang memastikan bahawa watak pergi 417 00:20:34,230 --> 00:20:36,570 ke baris seterusnya skrin. 418 00:20:36,570 --> 00:20:38,097 >> Malah, saya pergi dan melakukan ini. 419 00:20:38,097 --> 00:20:39,430 Biar saya pergi ke hadapan dan memadam ini. 420 00:20:39,430 --> 00:20:41,180 Sekarang, perhatikan bahawa bahagian atas skrin saya ada 421 00:20:41,180 --> 00:20:42,890 lampu merah sedikit tab yang menunjukkan, 422 00:20:42,890 --> 00:20:45,047 hey, anda telah tidak disimpan fail anda. 423 00:20:45,047 --> 00:20:47,880 Jadi, saya akan pergi ke hadapan dengan kawalan S atau perintah S, menyimpan fail. 424 00:20:47,880 --> 00:20:51,130 Kini ia goes-- pergi untuk hijau moment--. 425 00:20:51,130 --> 00:20:53,760 Dan sekarang ia kembali ke hanya menjadi ikon rapat. 426 00:20:53,760 --> 00:21:01,860 >> Jika saya kini menjalankan clanghello.c lagi, Enter, slash dot, a.out, Masukkan, 427 00:21:01,860 --> 00:21:04,110 anda akan melihat bahawa ia masih bekerja. 428 00:21:04,110 --> 00:21:06,020 Tetapi ia boleh dikatakan kereta kecil. 429 00:21:06,020 --> 00:21:08,714 Buat masa ini, ruang kerja prompt-- saya, dan maka itu tanda dolar, 430 00:21:08,714 --> 00:21:10,880 dan kemudian prompt-- sebenar saya adalah semua pada baris yang sama. 431 00:21:10,880 --> 00:21:14,540 Jadi ini pasti bug estetik, walaupun ia tidak benar-benar bug logik. 432 00:21:14,540 --> 00:21:16,250 >> Jadi saya akan membatalkan apa yang saya lakukan. 433 00:21:16,250 --> 00:21:18,560 Saya akan menjalankan semula a.out. 434 00:21:18,560 --> 00:21:22,710 Notis yang saya telah menambah newline watak kembali. 435 00:21:22,710 --> 00:21:24,280 Saya telah menyimpan fail. 436 00:21:24,280 --> 00:21:31,630 >> Jadi, saya akan menjalankan semula a.out, dan- keparat, bug, pepijat yang bermaksud tidak sengaja. 437 00:21:31,630 --> 00:21:35,020 Jadi bug adalah bahawa walaupun Saya tambah garis sendeng terbalik n di sana, 438 00:21:35,020 --> 00:21:41,180 semula disimpan, semula berlari program ini, tingkah laku adalah sama. 439 00:21:41,180 --> 00:21:42,640 Mengapa yang akan? 440 00:21:42,640 --> 00:21:43,910 >> Saya hilang langkah, bukan? 441 00:21:43,910 --> 00:21:47,620 Bahawa langkah utama sebelum ini adalah bahawa anda mempunyai supaya- apabila anda menukar kod sumber anda, 442 00:21:47,620 --> 00:21:49,610 ternyata juga menjalankan melalui pengkompil 443 00:21:49,610 --> 00:21:51,102 lagi supaya anda mendapat kod mesin baru. 444 00:21:51,102 --> 00:21:52,810 Dan kod mesin, sifar dan orang-orang yang, 445 00:21:52,810 --> 00:21:56,260 akan menjadi hampir sama, tetapi tidak sempurna begitu, kerana kita perlukan, 446 00:21:56,260 --> 00:21:57,510 sudah tentu, bahawa barisan baru. 447 00:21:57,510 --> 00:22:02,640 >> Jadi untuk menetapkan ini, saya akan memerlukan untuk menjalankan semula clanghello.c, masukkan, dot 448 00:22:02,640 --> 00:22:03,800 slash, a.out. 449 00:22:03,800 --> 00:22:08,402 Dan kini, hello dunia kembali di mana saya mengharapkan ia menjadi. 450 00:22:08,402 --> 00:22:09,610 Jadi ini adalah semua baik dan baik. 451 00:22:09,610 --> 00:22:13,150 Tetapi a.out adalah nama yang cukup bodoh untuk program, walaupun ia berlaku untuk menjadi, 452 00:22:13,150 --> 00:22:16,530 atas sebab-sebab sejarah, default-- bermaksud output pemasangan. 453 00:22:16,530 --> 00:22:20,780 >> Tetapi biarlah saya pergi ke hadapan di sini dan melakukan ini berbeza. 454 00:22:20,780 --> 00:22:24,760 Saya mahu program hello dunia saya untuk benar-benar dipanggil hello. 455 00:22:24,760 --> 00:22:28,320 Jadi, jika ia adalah ikon pada saya desktop, ia tidak akan a.out. 456 00:22:28,320 --> 00:22:29,730 Ia akan dipanggil hello. 457 00:22:29,730 --> 00:22:33,660 >> Jadi untuk melakukan ini, ternyata yang dilafaz, seperti banyak program, 458 00:22:33,660 --> 00:22:37,980 menyokong hujah baris arahan, atau bendera, atau suis, 459 00:22:37,980 --> 00:22:39,600 yang hanya mempengaruhi tingkah laku. 460 00:22:39,600 --> 00:22:45,160 Secara khusus, dilafaz menyokong sengkang o bendera, yang kemudiannya mengambil perkataan kedua. 461 00:22:45,160 --> 00:22:48,190 Dalam kes ini, saya sewenang-wenangnya akan, tetapi munasabah, memanggilnya hello. 462 00:22:48,190 --> 00:22:50,710 Tetapi saya boleh memanggilnya apa-apa Saya mahu, kecuali a.out, yang 463 00:22:50,710 --> 00:22:52,390 akan menjadi agak selain titik. 464 00:22:52,390 --> 00:22:55,640 >> Dan kemudian hanya nyatakan nama fail saya ingin menyusun. 465 00:22:55,640 --> 00:22:59,190 Jadi sekarang walaupun pada permulaan arahan yang saya masih perlu dilafaz, 466 00:22:59,190 --> 00:23:01,410 pada akhir arahan Saya masih mempunyai nama fail, 467 00:23:01,410 --> 00:23:05,520 Saya kini mempunyai ini baris arahan hujah, bendera ini yang berkata, 468 00:23:05,520 --> 00:23:11,180 oh, dengan cara itu, output-o, fail dipanggil hello, tidak a.out lalai. 469 00:23:11,180 --> 00:23:13,810 >> Jadi, jika saya tekan Enter kini, tiada apa yang seolah-olah telah berlaku. 470 00:23:13,810 --> 00:23:17,900 Dan, lagi, sekarang saya boleh melakukan slash dot hello. 471 00:23:17,900 --> 00:23:19,089 Jadi ia adalah program yang sama. 472 00:23:19,089 --> 00:23:21,380 Sifar dan orang-orang yang sama pada akhir hari. 473 00:23:21,380 --> 00:23:24,210 >> Tetapi mereka berada dalam dua a.out files-- berbeza, 474 00:23:24,210 --> 00:23:26,490 yang merupakan versi pertama dan hanya bodoh dinamakan, 475 00:23:26,490 --> 00:23:30,250 dan kini hello, yang merupakan lebih lebih nama yang menarik untuk program. 476 00:23:30,250 --> 00:23:33,195 Tetapi, jujur, saya tidak pernah saya sedang akan ingat ini lagi, 477 00:23:33,195 --> 00:23:34,070 dan sekali lagi, dan lagi. 478 00:23:34,070 --> 00:23:36,411 Dan, sebenarnya, seperti yang kita menulis program yang lebih rumit, 479 00:23:36,411 --> 00:23:38,160 arahan anda akan mempunyai untuk menulis 480 00:23:38,160 --> 00:23:40,920 akan mendapatkan lebih lebih rumit masih. 481 00:23:40,920 --> 00:23:41,940 >> Dan sebagainya tidak perlu bimbang. 482 00:23:41,940 --> 00:23:46,220 Ia ternyata bahawa manusia sebelum kami telah sedar mereka juga 483 00:23:46,220 --> 00:23:47,530 mempunyai masalah ini sama. 484 00:23:47,530 --> 00:23:50,900 Mereka juga tidak menikmati perlu menaip agak panjang, perintah batin, 485 00:23:50,900 --> 00:23:52,200 apatah lagi mengingati mereka. 486 00:23:52,200 --> 00:23:56,070 Dan supaya manusia sebelum kita telah membuat program lain yang membuat ia lebih mudah 487 00:23:56,070 --> 00:23:57,670 untuk menyusun perisian anda. 488 00:23:57,670 --> 00:24:01,609 >> Dan, sememangnya, satu itu program dipanggil Make. 489 00:24:01,609 --> 00:24:03,150 Jadi, saya akan pergi ke hadapan dan melakukan ini. 490 00:24:03,150 --> 00:24:05,691 Saya akan membatalkan semua yang saya hanya melakukan dengan cara yang berikut. 491 00:24:05,691 --> 00:24:07,690 Biar saya taip LS. 492 00:24:07,690 --> 00:24:10,980 Dan anda akan melihat tiga things-- a.out, dan bintang, hello 493 00:24:10,980 --> 00:24:12,810 dan bintang, dan hello.c. 494 00:24:12,810 --> 00:24:14,730 Mudah-mudahan, ini sepatutnya menjadi sedikit intuitif, 495 00:24:14,730 --> 00:24:18,220 setakat yang sebelum ini terdapat apa-apa dalam ruang kerja ini. 496 00:24:18,220 --> 00:24:21,240 Ada apa-apa yang saya ada dicipta sehingga kami mula kelas. 497 00:24:21,240 --> 00:24:22,840 >> Dan saya dicipta hello.c. 498 00:24:22,840 --> 00:24:24,544 Saya kemudian disusun, dan memanggilnya a.out. 499 00:24:24,544 --> 00:24:27,460 Dan kemudian saya disusun sekali lagi sedikit berbeza dan memanggilnya hello. 500 00:24:27,460 --> 00:24:32,830 Jadi saya mempunyai tiga fail dalam direktori ini, di dalam folder ini dipanggil Workspace. 501 00:24:32,830 --> 00:24:35,005 Sekarang, saya dapat melihat bahawa di samping jika saya zum keluar sebenarnya. 502 00:24:35,005 --> 00:24:37,530 >> Jika saya zum keluar di sini dan melihat bahawa tangan kanan atas 503 00:24:37,530 --> 00:24:39,940 sudut, seperti yang dijanjikan kiri sebelah atas skrin anda 504 00:24:39,940 --> 00:24:42,990 sentiasa akan menunjukkan kepada anda apa yang dalam akaun anda, apa yang 505 00:24:42,990 --> 00:24:44,790 bahagian dalam CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 Dan ada tiga fail sana. 507 00:24:46,680 --> 00:24:49,070 >> Jadi saya mahu menghilangkan a.out dan hello. 508 00:24:49,070 --> 00:24:51,275 Dan seperti yang anda mungkin bayangkan intuitif, anda 509 00:24:51,275 --> 00:24:53,400 boleh menyusun klik kawalan atau klik kanan pada ini. 510 00:24:53,400 --> 00:24:54,590 Dan menu kecil ini timbul. 511 00:24:54,590 --> 00:24:57,170 Anda boleh memuat turun fail, jalankan ia, pratonton, muat semula, menamakan semula, 512 00:24:57,170 --> 00:24:57,700 atau apa yang tidak. 513 00:24:57,700 --> 00:25:00,260 >> Dan saya hanya boleh memadam, dan ia akan pergi. 514 00:25:00,260 --> 00:25:05,260 Tetapi mari kita melakukan sesuatu dengan perintah talian buat masa ini, untuk mendapatkan selesa 515 00:25:05,260 --> 00:25:07,010 dengan ini, dan melakukan yang berikut. 516 00:25:07,010 --> 00:25:12,345 Saya akan pergi ke hadapan dan keluarkan a.out dengan menaip literal rma.out. 517 00:25:12,345 --> 00:25:14,890 Ternyata, perintah untuk mengeluarkan atau memadam sesuatu, 518 00:25:14,890 --> 00:25:16,280 tidak mengeluarkan atau memadam. 519 00:25:16,280 --> 00:25:21,260 >> Ia lebih ringkas RM, hanya untuk menyelamatkan anda beberapa ketukan kekunci, dan tekan Enter. 520 00:25:21,260 --> 00:25:24,707 Sekarang kita akan menjadi agak cryptically mengeluarkan a.out fail biasa. 521 00:25:24,707 --> 00:25:27,040 Saya tidak benar-benar tahu apa yang fail yang tidak teratur akan menjadi lagi. 522 00:25:27,040 --> 00:25:28,660 Tetapi saya mahu mengeluarkannya. 523 00:25:28,660 --> 00:25:30,150 >> Jadi, saya akan menaip y bagi ya. 524 00:25:30,150 --> 00:25:31,940 Atau saya boleh taipkan ia keluar, dan tekan Enter. 525 00:25:31,940 --> 00:25:33,440 Dan, sekali lagi, tiada apa yang berlaku. 526 00:25:33,440 --> 00:25:35,840 Tetapi itu adalah, secara umumnya, perkara yang baik. 527 00:25:35,840 --> 00:25:40,490 >> Jika saya menaip LS masa ini, apa yang perlu saya lihat? 528 00:25:40,490 --> 00:25:44,930 Mudah-mudahan, hanya khabar dan hello.c. 529 00:25:44,930 --> 00:25:47,286 Sekarang, sebagai diketepikan, anda akan notis bintang ini, asterisk, 530 00:25:47,286 --> 00:25:48,660 itulah pada akhir program saya. 531 00:25:48,660 --> 00:25:50,201 Dan mereka juga muncul dalam hijau. 532 00:25:50,201 --> 00:25:53,970 Itu baru cara CS50 IDE ini daripada cluing anda ke dalam hakikat 533 00:25:53,970 --> 00:25:55,280 bahawa itu bukan kod sumber. 534 00:25:55,280 --> 00:25:58,880 Itulah laksana, yang runnable program yang anda sebenarnya boleh menjalankan 535 00:25:58,880 --> 00:26:01,020 dengan melakukan slash dot, dan kemudian ia nama. 536 00:26:01,020 --> 00:26:05,860 >> Sekarang, biarlah saya pergi ke hadapan dan mengeluarkan ini, rm hello, Masukkan, keluarkan biasa 537 00:26:05,860 --> 00:26:08,010 memfailkan hello, ya. 538 00:26:08,010 --> 00:26:11,180 Dan sekarang saya menaip LS, kami kembali ke hello.c. 539 00:26:11,180 --> 00:26:13,917 Cuba untuk tidak memadam anda kod sumber yang sebenar. 540 00:26:13,917 --> 00:26:16,250 Walaupun terdapat ciri-ciri dibina ke CS50 IDE mana 541 00:26:16,250 --> 00:26:19,870 anda boleh pergi melalui sejarah semakan anda dan putar balik dalam masa jika anda secara tidak sengaja 542 00:26:19,870 --> 00:26:23,660 memadam sesuatu, jangan ingat seperti arahan ini ya atau tidak, 543 00:26:23,660 --> 00:26:25,381 apa yang anda benar-benar mahu lakukan. 544 00:26:25,381 --> 00:26:27,380 Dan jika saya pergi ke bahagian atas meninggalkan sudut di sini, 545 00:26:27,380 --> 00:26:30,696 semua yang tinggal adalah hello.c. 546 00:26:30,696 --> 00:26:32,570 Jadi ada tandan arahan lain yang anda 547 00:26:32,570 --> 00:26:37,550 boleh melaksanakan dalam dunia Linux, satu daripadanya adalah, sekali lagi, Make. 548 00:26:37,550 --> 00:26:40,180 Dan kita akan Selesakan program saya sekarang seperti berikut. 549 00:26:40,180 --> 00:26:43,270 >> Daripada melakukan dilafaz, daripada melakukan dilafaz-o, 550 00:26:43,270 --> 00:26:45,860 Saya akan hanya literal menaip, membuat hello. 551 00:26:45,860 --> 00:26:49,630 Dan kini melihat, saya tidak menaip membuat hello.c. 552 00:26:49,630 --> 00:26:50,910 Saya sedang menaip membuat hello. 553 00:26:50,910 --> 00:26:54,840 >> Dan program ini Buat yang datang dengan IDE CS50, dan banyak lagi 554 00:26:54,840 --> 00:26:57,090 biasanya dengan Linux, adalah satu program yang yang 555 00:26:57,090 --> 00:26:59,120 akan membuat program yang dikenali sebagai Hello. 556 00:26:59,120 --> 00:27:03,680 Dan ia akan menganggap, oleh konvensyen, bahawa jika program ini boleh dibuat, 557 00:27:03,680 --> 00:27:09,030 ia akan dibuat dari sumber yang fail kod yang berakhir dengan dot c, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Jadi, jika saya tekan Enter sekarang, melihat bahawa arahan yang mendapat dilaksanakan 559 00:27:12,210 --> 00:27:14,340 sebenarnya lebih lama lagi sebelum daripada sebelum ini. 560 00:27:14,340 --> 00:27:16,670 Dan itu kerana kami telah dipratatarajahkan CS50 IDE untuk mempunyai 561 00:27:16,670 --> 00:27:19,878 beberapa ciri-ciri tambahan yang dibina pada yang kita tidak perlu lagi, tetapi tidak lama lagi akan. 562 00:27:19,878 --> 00:27:23,470 Tetapi perkara utama untuk merealisasikan kini saya mempunyai program Hello. 563 00:27:23,470 --> 00:27:27,080 >> Jika saya menaip LS lagi, saya mempunyai program hello. 564 00:27:27,080 --> 00:27:32,070 Dan saya boleh berjalan dengan dot slash a.out, tidak, 565 00:27:32,070 --> 00:27:35,590 kerana titik keseluruhan ini pelaksanaan adalah dot slash hello. 566 00:27:35,590 --> 00:27:38,089 Dan kini saya mempunyai program hello dunia saya. 567 00:27:38,089 --> 00:27:39,880 Jadi bergerak ke hadapan, kami hampir sentiasa hanya 568 00:27:39,880 --> 00:27:42,088 akan menyusun program kami menggunakan Make arahan. 569 00:27:42,088 --> 00:27:45,300 Dan kemudian kita akan menghadapi mereka dengan dot slash, dan nama program. 570 00:27:45,300 --> 00:27:49,610 Tetapi sedar apa Make lakukan untuk anda, adalah ia tidak sendiri pengkompil. 571 00:27:49,610 --> 00:27:53,310 Ia hanya satu program mudah yang tahu bagaimana untuk mencetuskan pengkompil 572 00:27:53,310 --> 00:27:56,470 untuk menjalankan supaya anda sendiri boleh menggunakannya. 573 00:27:56,470 --> 00:28:00,220 >> Apa arahan lain wujud dalam Linux, dan seterusnya CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Tidak lama lagi kita akan melihat bahawa terdapat arahan CD, Tukar Directory. 575 00:28:03,107 --> 00:28:05,190 Ini membolehkan anda dalam tempoh antara muka baris arahan anda 576 00:28:05,190 --> 00:28:07,610 untuk bergerak ke hadapan, dan belakang, dan membuka folder yang berbeza 577 00:28:07,610 --> 00:28:08,860 tanpa menggunakan tetikus anda. 578 00:28:08,860 --> 00:28:12,470 >> LS kita lihat, yang bermaksud senarai fail-fail dalam direktori semasa. 579 00:28:12,470 --> 00:28:14,650 Membuat Dir, anda boleh mungkin mula untuk membuat kesimpulan 580 00:28:14,650 --> 00:28:18,150 apa ini bermakna sekarang-- membuat direktori, jika anda mahu mewujudkan folder. 581 00:28:18,150 --> 00:28:21,270 RM untuk keluarkan, RM Dir untuk keluarkan directory-- dan ini, 582 00:28:21,270 --> 00:28:24,160 lagi, adalah baris arahan setara yang 583 00:28:24,160 --> 00:28:26,945 boleh lakukan dalam CS50 IDE dengan tetikus anda. 584 00:28:26,945 --> 00:28:28,820 Tetapi anda tidak lama lagi akan yang kadang-kadang ia hanya 585 00:28:28,820 --> 00:28:30,610 banyak yang lebih cepat untuk melakukan perkara dengan papan kekunci, 586 00:28:30,610 --> 00:28:33,690 dan akhirnya banyak yang lebih kuat. 587 00:28:33,690 --> 00:28:36,440 >> Tetapi ia sukar untuk berhujah bahawa apa-apa yang kita telah lakukan setakat ini 588 00:28:36,440 --> 00:28:39,990 adalah semua yang berkuasa, apabila semua kita telah berkata iaitu, hello dunia. 589 00:28:39,990 --> 00:28:43,740 Dan, sebenarnya, saya dikodkeraskan yang kata-kata hello dunia ke dalam program saya. 590 00:28:43,740 --> 00:28:45,530 Tiada dinamik lagi. 591 00:28:45,530 --> 00:28:49,320 Scratch adalah suatu perintah magnitud lebih menarik minggu lepas. 592 00:28:49,320 --> 00:28:51,220 >> Dan jadi mari kita sampai ke sana. 593 00:28:51,220 --> 00:28:55,310 Mari kita langkah ke arah dengan cara beberapa fungsi-fungsi ini. 594 00:28:55,310 --> 00:28:59,470 Jadi bukan sahaja C datang dengan printf, dan tandan fungsi lain 595 00:28:59,470 --> 00:29:01,850 ada yang kita akan melihat dari masa ke masa, ia tidak 596 00:29:01,850 --> 00:29:05,760 membuat ia semua yang mudah hak keluar pintu gerbang dalam mendapatkan input pengguna. 597 00:29:05,760 --> 00:29:08,140 >> Malah, salah satu kelemahan bahasa seperti C, 598 00:29:08,140 --> 00:29:10,140 dan juga Java dan lagi lain, adalah bahawa ia tidak 599 00:29:10,140 --> 00:29:15,860 menjadikannya mudah untuk hanya mendapatkan perkara-perkara seperti integer daripada pengguna, atau tali, kata-kata, 600 00:29:15,860 --> 00:29:19,970 dan frasa, membiarkan perkara sahaja seperti terapung mata yang, atau nombor nyata 601 00:29:19,970 --> 00:29:23,240 dengan titik perpuluhan, dan benar-benar nombor lama, kerana kita tidak lama lagi akan melihat. 602 00:29:23,240 --> 00:29:27,000 Jadi senarai ini fungsi sini, ini seperti kepingan teka-teki Scratch lain 603 00:29:27,000 --> 00:29:31,090 bahawa kita mempunyai pra-dipasang di CS50 IDE yang kami akan gunakan untuk beberapa minggu 604 00:29:31,090 --> 00:29:34,010 roda latihan pelbagai, dan akhirnya membawa mereka keluar dan melihat 605 00:29:34,010 --> 00:29:37,210 di bawah hood, mungkin, di bagaimana perkara-perkara ini dilaksanakan. 606 00:29:37,210 --> 00:29:40,460 >> Tetapi untuk melakukan ini, mari kita sebenarnya menulis program. 607 00:29:40,460 --> 00:29:41,770 Biar saya pergi ke hadapan sekarang. 608 00:29:41,770 --> 00:29:44,750 Dan saya akan untuk mewujudkan baru memfailkan dengan mengklik plus kecil ini, 609 00:29:44,750 --> 00:29:45,970 dan mengklik Fail Baru. 610 00:29:45,970 --> 00:29:49,250 >> Saya akan menyimpan ini akan datang orang yang demikian, katakan, string.c, 611 00:29:49,250 --> 00:29:50,750 kerana saya mahu bermain dengan tali. 612 00:29:50,750 --> 00:29:53,990 Dan rentetan dalam C hanya jujukan aksara. 613 00:29:53,990 --> 00:29:56,090 Jadi sekarang mari kita pergi ke hadapan dan melakukan yang berikut. 614 00:29:56,090 --> 00:30:01,204 >> Termasuk standard IO.h-- dan ternyata standard IO, 615 00:30:01,204 --> 00:30:03,360 IO hanya bermakna input dan output. 616 00:30:03,360 --> 00:30:05,920 Jadi ia ternyata bahawa garis ini di sini adalah apa yang 617 00:30:05,920 --> 00:30:08,140 adalah jiran kita untuk menggunakan printf. 618 00:30:08,140 --> 00:30:10,410 Printf, sudah tentu, menghasilkan output. 619 00:30:10,410 --> 00:30:15,000 Jadi untuk menggunakan printf, ternyata daripada anda perlu mempunyai baris ini kod 620 00:30:15,000 --> 00:30:16,040 di bahagian atas fail anda. 621 00:30:16,040 --> 00:30:18,456 >> Dan kita akan kembali kepada apa yang yang benar-benar bermakna tidak lama lagi. 622 00:30:18,456 --> 00:30:20,400 Ia ternyata bahawa dalam mana-mana program C I menulis, 623 00:30:20,400 --> 00:30:23,640 Saya telah mendapat untuk memulakan dengan kod yang kelihatan seperti ini. 624 00:30:23,640 --> 00:30:26,860 Dan anda akan melihat CS50 IDE, dan pembangunan bersepadu yang lain 625 00:30:26,860 --> 00:30:30,050 persekitaran seperti itu, akan cuba sebaik 626 00:30:30,050 --> 00:30:31,780 mereka boleh untuk menyelesaikan pemikiran anda. 627 00:30:31,780 --> 00:30:35,930 Malah, masa yang lalu jika saya membatalkan apa yang saya lakukan, saya tekan Enter. 628 00:30:35,930 --> 00:30:39,160 >> Saya kemudian memukul kerinting terbuka brace, tekan Enter lagi. 629 00:30:39,160 --> 00:30:40,430 Dan ia selesai pemikiran saya. 630 00:30:40,430 --> 00:30:45,140 Ia memberikan saya barisan baru, berengsot tidak kurang atas sebab-sebab gaya yang bagus kita akan melihat. 631 00:30:45,140 --> 00:30:48,559 Dan kemudian ia secara automatik memberikan saya yang bersedia kerinting untuk menyelesaikan pemikiran saya. 632 00:30:48,559 --> 00:30:50,600 Kini, ia tidak selalu meneka apa yang anda mahu lakukan. 633 00:30:50,600 --> 00:30:53,620 Tetapi sebahagian besar, ia menjimatkan beberapa ketukan kekunci. 634 00:30:53,620 --> 00:30:59,560 Jadi masa yang lalu, kita berlari program-- ini hello, dunia, dan kemudian disusun ia, 635 00:30:59,560 --> 00:31:00,460 dan kemudian berlari. 636 00:31:00,460 --> 00:31:01,867 Tetapi tidak ada dinamik di sini. 637 00:31:01,867 --> 00:31:03,700 Bagaimana jika kita mahu melakukan sesuatu yang berbeza? 638 00:31:03,700 --> 00:31:07,630 Nah, bagaimana jika saya mahu untuk benar-benar mendapatkan rentetan daripada pengguna? 639 00:31:07,630 --> 00:31:11,250 Saya akan menggunakan sekeping teka-teki dipanggil tepat bahawa- mendapatkan tali. 640 00:31:11,250 --> 00:31:15,860 >> Rupa-rupanya, dalam C yang apabila anda tidak mahu untuk memberi input kepada sekeping teka-teki, 641 00:31:15,860 --> 00:31:19,360 atau lebih baik untuk fungsi, anda literal hanya melakukan kurungan terbuka, 642 00:31:19,360 --> 00:31:20,430 kurungan rapat. 643 00:31:20,430 --> 00:31:25,540 Jadi ia seolah-olah ada tiada kotak putih untuk menaip ke dalam. 644 00:31:25,540 --> 00:31:27,720 Blok katakan sebelum mempunyai kotak putih yang kecil. 645 00:31:27,720 --> 00:31:29,660 Kami tidak mempunyai bahawa kotak putih sekarang. 646 00:31:29,660 --> 00:31:33,310 >> Tetapi apabila saya memanggil mendapatkan tali, saya mahu meletakkan keputusan di suatu tempat. 647 00:31:33,310 --> 00:31:37,680 Jadi paradigma yang biasa di C adalah untuk memanggil fungsi, seperti mendapatkan tali sini, 648 00:31:37,680 --> 00:31:41,070 dan kemudian menyimpan nilai pulangan. 649 00:31:41,070 --> 00:31:44,450 Ia adalah hasil daripada yang usaha dalam sesuatu. 650 00:31:44,450 --> 00:31:47,630 >> Dan apakah membina dalam pengaturcaraan, 651 00:31:47,630 --> 00:31:53,450 sama ada dalam Scratch atau sekarang C, bahawa kita boleh menggunakan untuk benar-benar menyimpan sesuatu? 652 00:31:53,450 --> 00:31:55,990 Dipanggil ia berubah, bukan? 653 00:31:55,990 --> 00:32:00,320 Dan dalam Scratch, kita tidak benar-benar mengambil berat apa yang berlaku dalam pembolehubah. 654 00:32:00,320 --> 00:32:02,170 >> Tetapi dalam kes ini, kita sebenarnya lakukan. 655 00:32:02,170 --> 00:32:03,719 Saya akan katakan tali. 656 00:32:03,719 --> 00:32:05,510 Dan kemudian saya boleh memanggil apa-apa ini yang saya mahu. 657 00:32:05,510 --> 00:32:08,340 Saya akan memanggilnya nama, mendapat mendapatkan tali. 658 00:32:08,340 --> 00:32:10,250 >> Dan kini walaupun anda yang baru sedikit untuk ini, 659 00:32:10,250 --> 00:32:11,984 notis bahawa saya kurang terperinci. 660 00:32:11,984 --> 00:32:13,150 Saya lupa koma bertitik. 661 00:32:13,150 --> 00:32:14,400 Saya perlu menyelesaikan pemikiran ini. 662 00:32:14,400 --> 00:32:17,480 Jadi, saya akan untuk menggerakkan kursor saya, dan memukul koma bertitik di sana. 663 00:32:17,480 --> 00:32:19,130 Dan apa yang telah saya lakukan? 664 00:32:19,130 --> 00:32:21,440 Dalam baris ini kod, nombor 5 pada masa ini, 665 00:32:21,440 --> 00:32:23,799 Saya memanggil mendapatkan tali tanpa input. 666 00:32:23,799 --> 00:32:26,090 Jadi tidak ada sedikit putih kotak seperti Simpan blok mempunyai. 667 00:32:26,090 --> 00:32:28,590 >> Saya hanya berkata, hey, komputer, dapatkan saya rentetan. 668 00:32:28,590 --> 00:32:31,390 Tanda sama tidak benar-benar tanda sama, per se. 669 00:32:31,390 --> 00:32:33,790 Ia tugasan operator, yang bermaksud, 670 00:32:33,790 --> 00:32:37,860 hey, komputer, bergerak nilai dari kanan ke kiri. 671 00:32:37,860 --> 00:32:40,480 Dan di sebelah kiri, saya mempunyai yang berikut. 672 00:32:40,480 --> 00:32:43,580 >> Hey, komputer, memberi saya string-- yang jujukan aksara. 673 00:32:43,580 --> 00:32:45,637 Dan mengatakan Nama tali. 674 00:32:45,637 --> 00:32:47,220 Dan saya tidak perlu memanggilnya Nama. 675 00:32:47,220 --> 00:32:49,970 >> Saya boleh memanggilnya, konvensional, sesuatu seperti S, 676 00:32:49,970 --> 00:32:52,900 sama seperti kita digunakan untuk i memanggil pembolehubah i. 677 00:32:52,900 --> 00:32:54,829 Tetapi sekarang saya perlu melakukan sesuatu dengannya. 678 00:32:54,829 --> 00:32:57,370 Ia akan cukup bodoh untuk cuba menyusun kod ini, berjalan 679 00:32:57,370 --> 00:32:59,410 program ini, walaupun Saya mendapat tali, 680 00:32:59,410 --> 00:33:01,580 kerana ia masih hanya akan berkata hello dunia. 681 00:33:01,580 --> 00:33:06,140 >> Tetapi bagaimana jika saya ingin menukar ini. 682 00:33:06,140 --> 00:33:07,940 Mengapa tidak saya lakukan ini? 683 00:33:07,940 --> 00:33:11,632 Peratus s, koma s. 684 00:33:11,632 --> 00:33:13,090 Dan ini adalah sedikit samar masih. 685 00:33:13,090 --> 00:33:15,560 >> Jadi biarlah saya membuat pembolehubah saya lebih jelas. 686 00:33:15,560 --> 00:33:17,510 Biar saya menamakan Nama pembolehubah ini. 687 00:33:17,510 --> 00:33:20,230 Dan mari kita lihat jika kita tidak boleh mengusik selain apa yang berlaku di sini. 688 00:33:20,230 --> 00:33:22,770 >> Jadi pada baris lima, saya mendapat rentetan. 689 00:33:22,770 --> 00:33:25,620 Dan saya menyimpan tali itu, apa sahaja yang pengguna itu telah ditaip dalam 690 00:33:25,620 --> 00:33:28,430 di papan kekunci mereka, dalam pembolehubah dipanggil Nama. 691 00:33:28,430 --> 00:33:30,590 Dan ternyata bahawa printf tidak hanya 692 00:33:30,590 --> 00:33:34,220 mengambil satu hujah dalam dua sebut harga, satu input dalam tanda petik. 693 00:33:34,220 --> 00:33:39,100 >> Ia boleh mengambil masa dua, atau tiga, atau lebih, seperti yang kedua, atau ketiga, atau keempat, 694 00:33:39,100 --> 00:33:42,320 semua nama-nama pembolehubah, atau khusus menghargai, 695 00:33:42,320 --> 00:33:48,610 yang anda mahu untuk dimasukkan ke dalam, dinamik, yang rentetan dalam sebut harga. 696 00:33:48,610 --> 00:33:52,110 Dalam erti kata lain, apa yang akan salah dengan ini? 697 00:33:52,110 --> 00:33:57,920 Jika saya hanya berkata hello nama, garis sendeng terbalik n, menyimpan fail saya, disusun kod saya, 698 00:33:57,920 --> 00:34:01,660 dan berlari ini, apa yang akan berlaku? 699 00:34:01,660 --> 00:34:05,139 >> Ia hanya akan berkata, hello menamakan, secara literal N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 yang jenis bodoh kerana ia tidak berbeza dari dunia. 701 00:34:07,900 --> 00:34:10,400 Jadi apa-apa dalam petikan ialah apa yang benar-benar mendapat dicetak. 702 00:34:10,400 --> 00:34:12,520 Jadi, jika saya ingin mempunyai pemegang tempat di sana, 703 00:34:12,520 --> 00:34:14,422 Saya benar-benar perlu menggunakan beberapa sintaks khas. 704 00:34:14,422 --> 00:34:17,380 Dan ternyata jika anda membaca dokumentasi untuk fungsi printf, 705 00:34:17,380 --> 00:34:21,320 ia akan memberitahu anda bahawa jika anda menggunakan peratus s, 706 00:34:21,320 --> 00:34:23,920 anda boleh menggantikan nilai seperti berikut. 707 00:34:23,920 --> 00:34:27,190 >> Selepas koma selepas itu petikan berganda, anda hanya 708 00:34:27,190 --> 00:34:29,179 menulis nama pembolehubah yang anda mahu 709 00:34:29,179 --> 00:34:33,790 pasangkan ke dalam format yang kod, atau format specifier, 710 00:34:33,790 --> 00:34:35,469 peratus kerana tali. 711 00:34:35,469 --> 00:34:39,190 Dan sekarang jika saya telah menyimpan fail saya, Saya kembali ke terminal saya. 712 00:34:39,190 --> 00:34:42,870 Dan saya menaip Selesakan String, kerana, sekali lagi, nama ini 713 00:34:42,870 --> 00:34:45,510 fail yang saya pilih sebelum ini adalah string.c. 714 00:34:45,510 --> 00:34:48,510 >> Jadi, saya akan mengatakan Selesakan String, masukkan. 715 00:34:48,510 --> 00:34:51,550 Oh kebaikan saya, melihat semua kesilapan yang telah kami lakukan sudah. 716 00:34:51,550 --> 00:34:55,540 Dan ini is-- apa, ini adalah benar-benar seperti enam, tujuh program line? 717 00:34:55,540 --> 00:34:57,790 Jadi ini adalah di mana ia boleh sangat cepat mendapatkan yang amat sangat. 718 00:34:57,790 --> 00:35:00,890 >> Ini tetingkap terminal mempunyai kini hanya regurgitated 719 00:35:00,890 --> 00:35:03,230 sejumlah besar mesej ralat. 720 00:35:03,230 --> 00:35:07,560 Sesungguhnya, saya tidak mempunyai lebih ralat mesej daripada saya baris kod. 721 00:35:07,560 --> 00:35:08,680 Jadi apa yang berlaku? 722 00:35:08,680 --> 00:35:10,920 >> Well, strategi terbaik lakukan bila-bila masa anda 723 00:35:10,920 --> 00:35:13,710 yang menghadapi yang menggalakkan senarai kesilapan seperti itu, 724 00:35:13,710 --> 00:35:16,690 adalah skrol kembali, mencari arahan anda hanya berlari, yang dalam kes saya 725 00:35:16,690 --> 00:35:18,020 adalah membuat tali. 726 00:35:18,020 --> 00:35:21,630 Lihatlah apa yang membuat lakukan, dan itulah yang arahan dilafaz panjang, ada masalah besar di sana. 727 00:35:21,630 --> 00:35:22,950 >> Tetapi merah itu tidak baik. 728 00:35:22,950 --> 00:35:24,750 Green cuba menjadi lembut dan membantu. 729 00:35:24,750 --> 00:35:26,140 Tetapi ia masih tidak baik, dalam kes ini. 730 00:35:26,140 --> 00:35:27,510 Tetapi di mana ia baik? 731 00:35:27,510 --> 00:35:31,450 >> String.c, garis lima, watak lima. 732 00:35:31,450 --> 00:35:32,930 Jadi ini adalah hanya konvensyen biasa. 733 00:35:32,930 --> 00:35:36,060 Sesuatu kolon sesuatu yang bermakna nombor talian dan nombor watak. 734 00:35:36,060 --> 00:35:41,080 Ralat, penggunaan yang tidak diisytiharkan tali pengecam. 735 00:35:41,080 --> 00:35:42,900 Adakah anda bermaksud standard dalam? 736 00:35:42,900 --> 00:35:45,530 >> Jadi, malangnya, dilafaz cuba untuk membantu. 737 00:35:45,530 --> 00:35:46,850 Tetapi ia salah, dalam kes ini. 738 00:35:46,850 --> 00:35:49,350 Tiada, dilafaz, saya tidak bermaksud standard IO. 739 00:35:49,350 --> 00:35:51,070 Saya bermaksud bahawa pada baris satu, ya. 740 00:35:51,070 --> 00:35:53,420 >> Tetapi garis lima adalah salah satu ini di sini. 741 00:35:53,420 --> 00:35:57,040 Dan dilafaz tidak memahami S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 Ia merupakan satu pengecam tidak diisytiharkan, yang perkataan ia hanya tidak pernah dilihat sebelum ini. 743 00:36:01,490 --> 00:36:05,730 Dan itu kerana C, bahasa kita menulis kod dalam sekarang, 744 00:36:05,730 --> 00:36:08,070 tidak mempunyai pembolehubah dipanggil tali. 745 00:36:08,070 --> 00:36:11,380 >> Tidak, secara lalai, sokongan sesuatu yang dipanggil rentetan. 746 00:36:11,380 --> 00:36:16,750 Itulah sekeping CS50 daripada jargon, tetapi sangat konvensional. 747 00:36:16,750 --> 00:36:18,600 Tetapi saya boleh menetapkan ini seperti berikut. 748 00:36:18,600 --> 00:36:22,090 >> Jika saya menambah satu baris kod ke atas program ini, 749 00:36:22,090 --> 00:36:27,890 termasuk CS50.h, yang merupakan fail lain suatu tempat di dalam CS50 IDE, di suatu tempat 750 00:36:27,890 --> 00:36:30,820 pada cakera keras, jadi untuk bercakap, sistem operasi Ubuntu 751 00:36:30,820 --> 00:36:33,590 bahawa saya berjalan, yang adalah fail yang yang 752 00:36:33,590 --> 00:36:38,740 akan mengajar operasi sistem apa rentetan adalah, hanya 753 00:36:38,740 --> 00:36:41,930 seperti io.h standard fail dalam sistem operasi itu 754 00:36:41,930 --> 00:36:44,430 akan mengajar ia apa printf adalah. 755 00:36:44,430 --> 00:36:46,810 >> Sesungguhnya, kita akan mendapat mesej yang hampir sama 756 00:36:46,810 --> 00:36:50,600 jika IO mengaku standard Io.h dan cuba menggunakan printf. 757 00:36:50,600 --> 00:36:53,632 Jadi, saya akan pergi ke hadapan dan hanya mengambil kawalan L untuk mengosongkan skrin saya. 758 00:36:53,632 --> 00:36:56,340 Atau anda boleh menaip jelas dan ia akan hanya membersihkan tetingkap terminal. 759 00:36:56,340 --> 00:36:58,020 Tetapi anda masih boleh memilih kembali semula dalam masa. 760 00:36:58,020 --> 00:37:01,100 >> Dan saya akan menjalankan semula Selesakan String. 761 00:37:01,100 --> 00:37:03,660 Sila bersabar saya kali ini, Enter. 762 00:37:03,660 --> 00:37:05,380 Oh Tuhan saya, ia bekerja. 763 00:37:05,380 --> 00:37:09,280 ia menunjukkan saya arahan samar yang panjang itulah yang Membuat dijana melalui dilafaz, 764 00:37:09,280 --> 00:37:10,460 tetapi tiada mesej ralat. 765 00:37:10,460 --> 00:37:12,460 Jadi sedar, walaupun anda mungkin akan mendapat sepenuhnya 766 00:37:12,460 --> 00:37:14,480 terharu dengan beberapa mesej ralat, 767 00:37:14,480 --> 00:37:17,540 ia hanya mungkin melata yang menyakitkan hati kesan, di mana dilafaz tidak memahami 768 00:37:17,540 --> 00:37:19,620 satu perkara, yang bermakna ia kemudian tidak memahami perkataan seterusnya, 769 00:37:19,620 --> 00:37:20,560 atau baris berikutnya. 770 00:37:20,560 --> 00:37:22,850 Dan jadi ia hanya menjadikan pemakannya tercekik pada kod anda. 771 00:37:22,850 --> 00:37:24,440 Tetapi menetapkan mungkin mudah. 772 00:37:24,440 --> 00:37:27,822 Dan supaya sentiasa memberi tumpuan kepada baris pertama output. 773 00:37:27,822 --> 00:37:29,530 Dan jika anda tidak melakukan memahaminya, hanya melihat 774 00:37:29,530 --> 00:37:32,480 untuk kata kunci yang mungkin petunjuk, dan bilangan garisan, 775 00:37:32,480 --> 00:37:34,650 dan watak, di mana kesilapan yang mungkin. 776 00:37:34,650 --> 00:37:40,328 >> Sekarang, saya akan pergi ke hadapan dan menaip dot slash, tali, masuk. 777 00:37:40,328 --> 00:37:44,340 Hm, ia tidak mengatakan hello apa-apa. 778 00:37:44,340 --> 00:37:46,210 Mengapa? 779 00:37:46,210 --> 00:37:48,170 Nah, ingat, di mana ia berjalan? 780 00:37:48,170 --> 00:37:53,730 >> Ia mungkin terperangkap pada masa ini dalam gelung, jika anda akan, pada baris enam, 781 00:37:53,730 --> 00:37:56,950 kerana Dapatkan String oleh reka bentuk, ditulis oleh kakitangan CS50, 782 00:37:56,950 --> 00:38:00,350 secara literal bermaksud untuk hanya duduk di sana menunggu, dan menunggu, 783 00:38:00,350 --> 00:38:01,850 dan menunggu rentetan. 784 00:38:01,850 --> 00:38:03,792 Apa yang kami maksudkan dengan tali adalah input manusia. 785 00:38:03,792 --> 00:38:04,500 Jadi, anda tahu apa? 786 00:38:04,500 --> 00:38:05,166 Biar saya pergi ke hadapan. 787 00:38:05,166 --> 00:38:08,704 Dan hanya pada sesuka hati, biarlah saya taip nama saya, David, masukkan. 788 00:38:08,704 --> 00:38:10,120 Sekarang saya mempunyai program yang lebih dinamik. 789 00:38:10,120 --> 00:38:11,240 Ia berkata, hello David. 790 00:38:11,240 --> 00:38:16,280 >> Jika saya pergi ke hadapan dan menjalankan ini lagi, saya cuba menyebut nama Zamila, masukkan. 791 00:38:16,280 --> 00:38:17,940 Dan sekarang kita mempunyai program dinamik. 792 00:38:17,940 --> 00:38:19,380 Saya tidak dikodkan dunia. 793 00:38:19,380 --> 00:38:21,760 Saya tidak berkod keras nama, atau David, atau Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Sekarang ia lebih seperti program yang kita tahu, di mana jika ia mengambil input, 795 00:38:25,350 --> 00:38:27,870 ia menghasilkan output yang sedikit berbeza. 796 00:38:27,870 --> 00:38:31,020 Sekarang, ini bukan yang terbaik pengalaman pengguna, atau UX. 797 00:38:31,020 --> 00:38:33,000 Saya menjalankan program ini. 798 00:38:33,000 --> 00:38:35,830 >> Saya tidak tahu apa yang saya sepatutnya yang perlu dilakukan, melainkan jika saya benar-benar melihat 799 00:38:35,830 --> 00:38:37,290 atau ingat kod sumber. 800 00:38:37,290 --> 00:38:39,640 Jadi mari kita membuat pengguna mengalami sedikit lebih baik 801 00:38:39,640 --> 00:38:41,240 dengan yang paling mudah perkara. 802 00:38:41,240 --> 00:38:44,782 Biar saya pergi semula ke dalam ini program, dan hanya berkata printf. 803 00:38:44,782 --> 00:38:48,870 >> Dan biarlah saya pergi ke hadapan dan menyebut nama, kolon, dan ruang, dan kemudian koma bertitik. 804 00:38:48,870 --> 00:38:51,170 Dan hanya untuk tendangan, ada tindak balas n. 805 00:38:51,170 --> 00:38:52,980 Dan itu sengaja, kerana saya tidak mahu 806 00:38:52,980 --> 00:38:54,590 segera untuk bergerak ke baris seterusnya. 807 00:38:54,590 --> 00:38:58,800 >> Saya mahu, sebaliknya, melakukan ini, membuat tali susun semula kod saya ke dalam mesin baru 808 00:38:58,800 --> 00:39:00,980 kod dot slash tali. 809 00:39:00,980 --> 00:39:02,460 Ah, ini adalah jauh lebih cantik. 810 00:39:02,460 --> 00:39:05,780 Sekarang saya benar-benar tahu apa yang komputer mahu saya lakukan, memberikan nama. 811 00:39:05,780 --> 00:39:10,020 >> Jadi, saya akan pergi ke hadapan dan menaip dalam Rob maka masuklah dan hello, Rob. 812 00:39:10,020 --> 00:39:13,640 Jadi, sedar, ini masih, pada akhir hari, hanya program sembilan garis. 813 00:39:13,640 --> 00:39:15,090 Tetapi kami telah mengambil langkah-langkah bayi. 814 00:39:15,090 --> 00:39:18,380 >> Kami menulis satu baris yang kita sudah biasa, printf, hello dunia. 815 00:39:18,380 --> 00:39:19,980 Kemudian kami undid sedikit itu. 816 00:39:19,980 --> 00:39:21,560 Dan kita sebenarnya digunakan mendapatkan tali. 817 00:39:21,560 --> 00:39:23,362 Dan kita dilambung bahawa nilai dalam pembolehubah. 818 00:39:23,362 --> 00:39:26,070 Dan kemudian kita pergi ke hadapan dan lebih baik lagi dengan garis ketiga. 819 00:39:26,070 --> 00:39:29,220 Dan proses lelaran ini menulis perisian benar-benar penting. 820 00:39:29,220 --> 00:39:33,420 Dalam CS50, dan dalam kehidupan secara umum, anda sepatutnya tidak duduk, 821 00:39:33,420 --> 00:39:36,800 mempunyai program yang dalam fikiran, dan cuba bertulis perkara sialan seluruh sekaligus. 822 00:39:36,800 --> 00:39:40,810 >> Ia akan, tidak dapat tidak, menyebabkan cara lebih banyak kesilapan daripada kita sendiri melihat di sini. 823 00:39:40,810 --> 00:39:44,070 Malah saya, hingga ke hari ini, sentiasa melakukan kesilapan bodoh yang lain, 824 00:39:44,070 --> 00:39:47,480 adalah kesilapan sebenarnya sukar yang sukar untuk memahami. 825 00:39:47,480 --> 00:39:52,095 Tetapi anda akan membuat lebih banyak kesilapan yang lebih baris kod anda menulis semua sekali gus. 826 00:39:52,095 --> 00:39:54,220 Dan supaya amalan ini, naik sedikit kod 827 00:39:54,220 --> 00:39:57,930 yang sesuai dengan anda, menyusun ia, berjalan, menguji ia lebih umum, 828 00:39:57,930 --> 00:40:01,370 kemudian bergerak pada-- jadi seperti kami terus lapisan dan lapisan minggu lepas, 829 00:40:01,370 --> 00:40:04,190 membina dari sesuatu yang sangat mudah untuk sesuatu yang lebih kompleks, 830 00:40:04,190 --> 00:40:05,200 melakukan perkara yang sama di sini. 831 00:40:05,200 --> 00:40:08,500 Jangan duduk, dan cuba untuk menulis keseluruhan masalah. 832 00:40:08,500 --> 00:40:10,780 Sebenarnya mengambil langkah-langkah bayi. 833 00:40:10,780 --> 00:40:15,100 >> Sekarang, tali tidak semua yang berguna kepada diri mereka sendiri. 834 00:40:15,100 --> 00:40:18,210 Kita akan sebenarnya, ideal, seperti untuk mempunyai sesuatu yang lain dalam Kit kami. 835 00:40:18,210 --> 00:40:20,990 Jadi mari kita sebenarnya melakukan perkara tersebut. 836 00:40:20,990 --> 00:40:24,900 >> Biar saya pergi ke hadapan sekarang dan menyiapkan program yang sedikit berbeza. 837 00:40:24,900 --> 00:40:28,320 Dan kita akan memanggil int.c ini, bagi integer. 838 00:40:28,320 --> 00:40:30,870 Saya akan, begitu juga, termasuk CS550.h. 839 00:40:30,870 --> 00:40:33,060 Saya akan termasuk standard IO. 840 00:40:33,060 --> 00:40:36,630 Dan itu akan menjadi agak biasa pada hari-hari pertama dalam kelas. 841 00:40:36,630 --> 00:40:39,050 >> Dan saya akan bersedia diri saya dengan fungsi utama. 842 00:40:39,050 --> 00:40:43,370 Dan sekarang bukannya mendapat tali, mari kita pergi ke hadapan dan mendapatkan int. 843 00:40:43,370 --> 00:40:49,285 Mari kita memanggilnya i, dan memanggilnya mendapatkan int, parens rapat, koma bertitik. 844 00:40:49,285 --> 00:40:51,410 Dan sekarang mari kita buat sesuatu dengannya, printf. 845 00:40:51,410 --> 00:40:56,190 >> Katakan sesuatu seperti hello, garis sendeng terbalik n, koma i. 846 00:40:56,190 --> 00:41:00,010 Jadi, saya cukup banyak meniru apa yang saya lakukan hanya seketika lalu. 847 00:41:00,010 --> 00:41:01,660 Saya mempunyai pemegang tempat di sini. 848 00:41:01,660 --> 00:41:05,150 Saya telah koma i di sini, kerana saya mahu pasangkan i ke dalam pemegang tempat itu. 849 00:41:05,150 --> 00:41:07,250 >> Jadi mari kita pergi ke hadapan dan cuba menyusun program ini. 850 00:41:07,250 --> 00:41:10,060 fail ini dipanggil int.c. 851 00:41:10,060 --> 00:41:12,920 Jadi, saya akan berkata, membuat int, masukkan. 852 00:41:12,920 --> 00:41:16,420 Oh Tuhan saya, tetapi ada masalah besar, bukan? 853 00:41:16,420 --> 00:41:17,230 Ada kesilapan. 854 00:41:17,230 --> 00:41:19,810 >> Ada kesilapan sintaksis di sini seperti bahawa program ini tidak boleh 855 00:41:19,810 --> 00:41:25,460 disusun dalam int.c, talian tujuh, watak 27, format ralat 856 00:41:25,460 --> 00:41:28,400 menentukan jenis char bintang, apa sahaja yang. 857 00:41:28,400 --> 00:41:30,020 Tetapi jenis hujah adalah int. 858 00:41:30,020 --> 00:41:33,110 >> Jadi di sini, juga, kita tidak akan supaya- walaupun hari ini adalah banyak bahan, 859 00:41:33,110 --> 00:41:35,710 kita akan membanjiri anda dengan benar-benar setiap ciri C, 860 00:41:35,710 --> 00:41:38,070 dan pengaturcaraan lebih umum, dalam hanya beberapa minggu pertama. 861 00:41:38,070 --> 00:41:40,400 Jadi ada sering akan menjadi jargon yang anda tidak biasa. 862 00:41:40,400 --> 00:41:43,350 Dan, sebenarnya, bintang char adalah sesuatu kita akan kembali kepada 863 00:41:43,350 --> 00:41:44,830 dalam seminggu atau masa two. 864 00:41:44,830 --> 00:41:47,530 >> Tetapi untuk sekarang, mari kita lihat jika kita boleh menghuraikan kata-kata yang biasa. 865 00:41:47,530 --> 00:41:50,750 Formats-- supaya kita mendengar format specifier, kod format sebelum ini. 866 00:41:50,750 --> 00:41:51,840 Itulah biasa. 867 00:41:51,840 --> 00:41:53,840 Type-- tetapi hujah yang mempunyai jenis int. 868 00:41:53,840 --> 00:41:55,980 Tunggu satu minit, i adalah int. 869 00:41:55,980 --> 00:41:59,230 >> Mungkin s peratus sebenarnya mempunyai maksud tertentu ditakrifkan. 870 00:41:59,230 --> 00:42:00,230 Dan, sememangnya, ia tidak. 871 00:42:00,230 --> 00:42:03,101 Integer, jika anda mahu printf untuk menggantikannya, 872 00:42:03,101 --> 00:42:05,350 anda sebenarnya perlu menggunakan format yang berbeza specifier. 873 00:42:05,350 --> 00:42:06,890 Dan anda tidak akan tahu ini melainkan jika seseorang memberitahu anda, 874 00:42:06,890 --> 00:42:07,973 atau anda telah melakukannya sebelum ini. 875 00:42:07,973 --> 00:42:10,490 Tetapi peratus i adalah apa yang boleh biasa digunakan 876 00:42:10,490 --> 00:42:12,240 dalam printf untuk memasang integer. 877 00:42:12,240 --> 00:42:14,920 Anda juga boleh menggunakan peratus d untuk integer perpuluhan. 878 00:42:14,920 --> 00:42:16,490 Tetapi saya adalah baik dan mudah di sini. 879 00:42:16,490 --> 00:42:17,590 Oleh itu, kita akan pergi dengan itu. 880 00:42:17,590 --> 00:42:21,160 >> Sekarang, saya akan pergi ke hadapan dan jalankan lagi make int, Enter. 881 00:42:21,160 --> 00:42:23,328 Itu baik, tiada kesilapan. 882 00:42:23,328 --> 00:42:27,260 Dot mengurangkan OK int--, pengalaman pengguna yang tidak baik, kerana saya tidak memberitahu diri saya 883 00:42:27,260 --> 00:42:27,760 Apa nak buat. 884 00:42:27,760 --> 00:42:28,426 Tetapi itulah denda. 885 00:42:28,426 --> 00:42:29,480 Saya menangkap dengan cepat. 886 00:42:29,480 --> 00:42:36,260 >> Dan sekarang mari saya pergi ke hadapan dan menaip David, OK, Zamila, Rob. 887 00:42:36,260 --> 00:42:37,820 OK, jadi ini adalah satu perkara yang baik. 888 00:42:37,820 --> 00:42:41,710 Kali ini, saya menggunakan fungsi, sekeping teka-teki, dipanggil mendapatkan int. 889 00:42:41,710 --> 00:42:44,230 Dan ternyata out-- dan kami akan lihat nanti ini dalam term-- yang 890 00:42:44,230 --> 00:42:47,730 kakitangan CS50 telah melaksanakan mendapatkan tali dalam apa-apa cara 891 00:42:47,730 --> 00:42:50,350 bahawa ia akan hanya secara fizikal mendapatkan rentetan untuk anda. 892 00:42:50,350 --> 00:42:54,340 >> Ia telah melaksanakan mendapatkan int dalam apa-apa cara bahawa ia hanya akan 893 00:42:54,340 --> 00:42:55,590 mendapatkan integer untuk anda. 894 00:42:55,590 --> 00:42:57,830 Dan jika anda, manusia, tidak bekerjasama, ia 895 00:42:57,830 --> 00:43:00,590 literal hanya akan mengatakan mencuba semula, cuba semula, cuba semula, 896 00:43:00,590 --> 00:43:05,200 harfiah duduk di sana menggelung, sehingga anda memaksa dengan beberapa nombor ajaib, 897 00:43:05,200 --> 00:43:07,670 seperti 50, dan hello 50. 898 00:43:07,670 --> 00:43:11,440 >> Atau jika kita menjalankan ini sekali lagi dan taip 42, hello 42. 899 00:43:11,440 --> 00:43:15,750 Dan sebagainya fungsi get int bahagian dalam sekeping teka-teki 900 00:43:15,750 --> 00:43:19,050 logik cukup, pemikiran yang cukup, untuk memikirkan, apakah perkataan? 901 00:43:19,050 --> 00:43:20,330 Dan apa yang nombor? 902 00:43:20,330 --> 00:43:23,165 Hanya menerima, akhirnya, nombor. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Jadi ia ternyata bahawa ini tidak semua yang ekspresif. 905 00:43:30,230 --> 00:43:30,910 setakat ini. 906 00:43:30,910 --> 00:43:33,690 Jadi, yay, kita masa lalu pergi cukup cepat 907 00:43:33,690 --> 00:43:38,320 ke dalam melaksanakan permainan, dan animasi, dan kerja-kerja seni dalam Scratch. 908 00:43:38,320 --> 00:43:42,260 Dan di sini, kita yang kandungan dengan dunia hello, dan hello 50. 909 00:43:42,260 --> 00:43:43,696 >> Ia bukan semua inspirasi itu. 910 00:43:43,696 --> 00:43:46,070 Dan, sememangnya, ini pertama beberapa contoh akan mengambil sedikit masa 911 00:43:46,070 --> 00:43:47,510 untuk meningkatkan dalam keseronokan. 912 00:43:47,510 --> 00:43:49,854 Tetapi kita mempunyai lebih banyak lagi mengawal sekarang, sebenarnya. 913 00:43:49,854 --> 00:43:51,770 Dan kita akan sangat mula lapisan 914 00:43:51,770 --> 00:43:53,870 di atas ini primitif asas. 915 00:43:53,870 --> 00:43:56,370 >> Tetapi pertama, mari kita memahami apa batasan berada. 916 00:43:56,370 --> 00:43:58,620 Malah, salah satu perkara yang Scratch tidak mudah 917 00:43:58,620 --> 00:44:00,990 marilah kita lakukan adalah benar-benar kelihatan di bawah hood, 918 00:44:00,990 --> 00:44:03,740 dan memahami apa yang komputer, apa yang ia boleh lakukan, 919 00:44:03,740 --> 00:44:05,250 dan apa batasannya berada. 920 00:44:05,250 --> 00:44:08,580 Dan, sememangnya, bahawa kekurangan pemahaman, berpotensi, jangka panjang 921 00:44:08,580 --> 00:44:12,520 boleh membawa kepada penulisan mistakes-- kita sendiri pepijat, menulis perisian tidak selamat yang 922 00:44:12,520 --> 00:44:13,880 mendapat digodam dalam beberapa cara. 923 00:44:13,880 --> 00:44:17,130 >> Jadi mari kita mengambil beberapa langkah ke arah memahami ini sedikit lebih baik dengan 924 00:44:17,130 --> 00:44:19,710 cara, berkata, contoh berikut. 925 00:44:19,710 --> 00:44:23,550 Saya akan pergi ke hadapan dan melaksanakan sebenar cepat program yang dikenali sebagai Adder. 926 00:44:23,550 --> 00:44:25,134 Seperti, mari kita menambah beberapa nombor bersama-sama. 927 00:44:25,134 --> 00:44:27,800 Dan saya akan memberi kod kepada beberapa sudut di sini, dan hanya menyalin dan pes 928 00:44:27,800 --> 00:44:30,270 di mana saya sebelum ini, hanya supaya kita boleh mendapatkan pergi lebih awal. 929 00:44:30,270 --> 00:44:33,090 Jadi sekarang saya telah mendapat permulaan asas program yang dipanggil Adder. 930 00:44:33,090 --> 00:44:34,670 >> Dan mari kita pergi ke hadapan dan melakukan ini. 931 00:44:34,670 --> 00:44:38,680 Saya akan pergi ke hadapan dan katakan, intx mendapat mendapatkan int. 932 00:44:38,680 --> 00:44:39,430 Dan anda tahu apa? 933 00:44:39,430 --> 00:44:40,990 Mari kita membuat pengalaman pengguna yang lebih baik. 934 00:44:40,990 --> 00:44:45,740 >> Jadi mari kita hanya mengatakan x, dan berkesan segera pengguna untuk memberi kita x. 935 00:44:45,740 --> 00:44:50,600 Dan biarkan saya pergi ke hadapan dan berkata, printf bagaimana pula y adalah, kali ini menjangkakan 936 00:44:50,600 --> 00:44:53,140 dua nilai daripada pengguna. 937 00:44:53,140 --> 00:44:59,759 Dan kemudian mari kita pergi ke hadapan dan berkata, printf, jumlah x dan y adalah. 938 00:44:59,759 --> 00:45:01,300 Dan sekarang saya tidak mahu melakukan peratus s. 939 00:45:01,300 --> 00:45:09,080 Saya mahu lakukan peratus i, garis sendeng terbalik n, dan kemudian pasangkan nilai jumlah. 940 00:45:09,080 --> 00:45:10,620 >> Jadi bagaimana saya boleh pergi tentang melakukan ini? 941 00:45:10,620 --> 00:45:11,270 Awak tahu tak? 942 00:45:11,270 --> 00:45:12,840 Saya tahu bagaimana untuk menggunakan pembolehubah. 943 00:45:12,840 --> 00:45:15,140 Biar saya mengisytiharkan yang baru, int z. 944 00:45:15,140 --> 00:45:16,770 >> Dan saya akan mengambil tekaan di sini. 945 00:45:16,770 --> 00:45:21,470 Jika terdapat tanda-tanda yang sama dalam ini bahasa, mungkin saya hanya boleh melakukan x ditambah y, 946 00:45:21,470 --> 00:45:23,660 selagi saya mengakhiri saya berfikir dengan koma bertitik? 947 00:45:23,660 --> 00:45:28,170 Sekarang saya boleh kembali ke sini, pasangkan z, menyelesaikan pemikiran ini dengan koma bertitik. 948 00:45:28,170 --> 00:45:33,160 Dan mari kita lihat sekarang, jika ini urutan lines-- x adalah mendapatkan int. 949 00:45:33,160 --> 00:45:34,770 Y adalah mendapatkan int. 950 00:45:34,770 --> 00:45:37,980 >> Tambahkan x dan y, menyimpan nilai dalam z-- jadi, sekali lagi, ingat tanda 'sama 951 00:45:37,980 --> 00:45:38,560 tidak sama. 952 00:45:38,560 --> 00:45:41,100 Ia tugasan dari kanan ke kiri. 953 00:45:41,100 --> 00:45:45,180 Dan mari kita mencetak jumlah wang yang x dan y tidak literal z, 954 00:45:45,180 --> 00:45:46,830 tetapi apa yang di dalam z. 955 00:45:46,830 --> 00:45:50,090 Jadi mari kita membuat Adder - bagus, tiada kesilapan masa ini. 956 00:45:50,090 --> 00:45:53,030 Dot mengurangkan Adder, memasuki, x akan menjadi 1. 957 00:45:53,030 --> 00:45:55,380 >> Y akan menjadi 2. 958 00:45:55,380 --> 00:45:58,964 Dan jumlah x dan y ialah 3. 959 00:45:58,964 --> 00:46:00,130 Jadi itu semua baik dan baik. 960 00:46:00,130 --> 00:46:03,260 >> Jadi, anda akan membayangkan matematik yang harus bekerja dalam program seperti ini. 961 00:46:03,260 --> 00:46:04,040 Tetapi anda tahu apa? 962 00:46:04,040 --> 00:46:06,904 Berubah-ubah ini, barisan 12, walaupun perlu? 963 00:46:06,904 --> 00:46:09,820 Anda tidak perlu untuk mendapatkan dalam tabiat hanya menyimpan perkara-perkara dalam pembolehubah 964 00:46:09,820 --> 00:46:10,980 hanya kerana anda boleh. 965 00:46:10,980 --> 00:46:13,550 Dan, sebenarnya, ia biasanya reka bentuk yang tidak terancang 966 00:46:13,550 --> 00:46:18,100 jika anda sedang mencipta pembolehubah, yang dipanggil z dalam kes ini, menyimpan sesuatu di dalamnya, 967 00:46:18,100 --> 00:46:21,390 dan kemudian segera menggunakannya, tetapi tidak lagi. 968 00:46:21,390 --> 00:46:24,700 Mengapa memberikan sesuatu nama seperti z jika anda benar-benar 969 00:46:24,700 --> 00:46:26,770 akan menggunakan yang Perkara yang hanya sekali, dan sebagainya 970 00:46:26,770 --> 00:46:29,380 proksimal ke mana anda membuat di tempat yang pertama, 971 00:46:29,380 --> 00:46:31,052 begitu dekat dari segi baris kod? 972 00:46:31,052 --> 00:46:31,760 Jadi, anda tahu apa? 973 00:46:31,760 --> 00:46:34,480 Ia ternyata bahawa C adalah cukup fleksibel. 974 00:46:34,480 --> 00:46:36,586 Jika saya benar-benar ingin plug-in nilai di sini, 975 00:46:36,586 --> 00:46:38,210 Saya tidak perlu untuk mengisytiharkan pembolehubah baru. 976 00:46:38,210 --> 00:46:41,680 Saya hanya boleh plug-in x tambah y, kerana C memahami 977 00:46:41,680 --> 00:46:43,390 aritmetik, dan pengendali matematik. 978 00:46:43,390 --> 00:46:47,140 >> Jadi saya hanya boleh mengatakan, melakukan matematik ini, x ditambah y, apa sahaja yang mereka nilai adalah, 979 00:46:47,140 --> 00:46:50,780 plug yang terhasil integer ke dalam tali itu. 980 00:46:50,780 --> 00:46:53,730 Jadi ini mungkin, walaupun hanya satu baris lebih pendek, 981 00:46:53,730 --> 00:46:58,480 reka bentuk yang lebih baik, program yang lebih baik, kerana ada kurang kod, oleh itu 982 00:46:58,480 --> 00:46:59,921 kurang bagi saya untuk memahami. 983 00:46:59,921 --> 00:47:01,920 Dan ia juga hanya lebih bersih, sejauh mana kita tidak 984 00:47:01,920 --> 00:47:04,620 memperkenalkan perkataan baru, simbol-simbol baru, seperti z, 985 00:47:04,620 --> 00:47:07,510 walaupun mereka tidak benar-benar berkhidmat banyak tujuan. 986 00:47:07,510 --> 00:47:12,890 >> Malangnya, matematik tidak semua yang kadang-kadang boleh dipercayai. 987 00:47:12,890 --> 00:47:15,270 Mari kita pergi ke hadapan dan melakukan ini. 988 00:47:15,270 --> 00:47:18,200 Saya akan pergi ke hadapan sekarang dan melakukan yang berikut. 989 00:47:18,200 --> 00:47:27,650 >> Mari kita buat printf, peratus i, ditambah peratus i, hendaklah peratus i, garis sendeng terbalik n. 990 00:47:27,650 --> 00:47:32,240 Dan saya akan melakukan this-- xyx ditambah y. 991 00:47:32,240 --> 00:47:34,821 Jadi saya hanya akan menulis semula ini sedikit berbeza di sini. 992 00:47:34,821 --> 00:47:36,320 Biar saya melakukan pemeriksaan kewarasan cepat. 993 00:47:36,320 --> 00:47:37,986 Sekali lagi, jangan kita mendapatkan lebih awal daripada diri kita sendiri. 994 00:47:37,986 --> 00:47:41,420 Membuat penambah, dot slash penambah. 995 00:47:41,420 --> 00:47:44,950 x 1, y ialah 2, 1 tambah 2 ialah 3. 996 00:47:44,950 --> 00:47:45,870 Jadi itulah yang baik. 997 00:47:45,870 --> 00:47:49,060 Tetapi mari kita merumitkan ini sekarang sedikit, dan membuat fail baru. 998 00:47:49,060 --> 00:47:53,350 >> Saya akan memanggil satu ini, berkata, ints, plural bagi integer. 999 00:47:53,350 --> 00:47:55,980 Biar saya mulakan di mana saya sebentar tadi. 1000 00:47:55,980 --> 00:47:57,770 Tetapi sekarang mari kita buat beberapa baris lain. 1001 00:47:57,770 --> 00:48:03,430 Biar saya pergi ke hadapan dan melakukan yang berikut, printf, peratus i, tolak peratus i, 1002 00:48:03,430 --> 00:48:08,959 adalah peratus i, koma x, koma yx tolak y. 1003 00:48:08,959 --> 00:48:10,750 Jadi saya lakukan sedikit matematik berbeza di sana. 1004 00:48:10,750 --> 00:48:11,624 Mari kita buat satu sama lain. 1005 00:48:11,624 --> 00:48:16,610 Jadi peratus i kali peratus i adalah peratus i, garis sendeng terbalik n. 1006 00:48:16,610 --> 00:48:21,430 Mari kita plug-dalam x dan y, dan masa x y. 1007 00:48:21,430 --> 00:48:24,530 Kami akan menggunakan asterisk pada komputer anda untuk masa. 1008 00:48:24,530 --> 00:48:26,390 >> Anda tidak menggunakan x. x adalah nama pembolehubah di sini. 1009 00:48:26,390 --> 00:48:28,270 Anda menggunakan bintang untuk pendaraban. 1010 00:48:28,270 --> 00:48:29,020 Mari kita buat satu lagi. 1011 00:48:29,020 --> 00:48:34,580 peratus printf I, dibahagikan dengan peratus i, adalah peratus i, 1012 00:48:34,580 --> 00:48:40,460 n garis sendeng terbalik. xy dibahagikan dengan y-- supaya anda menggunakan garis italik dalam C 1013 00:48:40,460 --> 00:48:41,502 untuk melakukan pembahagian. 1014 00:48:41,502 --> 00:48:42,460 Dan mari kita buat satu yang lain. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Baki peratus i, dibahagikan dengan peratus i, adalah peratus i. 1017 00:48:55,240 --> 00:48:59,550 xy-- dan kini baki adalah apa yang ditinggalkan. 1018 00:48:59,550 --> 00:49:02,980 Apabila anda cuba membahagikan pembawahnya ke dalam pengangka a, 1019 00:49:02,980 --> 00:49:05,570 berapa banyak yang tinggal lebih daripada itu anda tidak boleh membahagikan keluar? 1020 00:49:05,570 --> 00:49:07,910 >> Jadi tidak ada benar-benar, semestinya, simbol 1021 00:49:07,910 --> 00:49:09,470 kami telah digunakan di sekolah rendah untuk ini. 1022 00:49:09,470 --> 00:49:13,830 Tetapi ada dalam C. Anda boleh mengatakan x modulo y, di mana 1023 00:49:13,830 --> 00:49:18,000 ini tanda peratus dalam context-- ini mengelirukan apabila anda berada di dalam 1024 00:49:18,000 --> 00:49:20,170 daripada petikan berganda, bahagian dalam printf, peratus 1025 00:49:20,170 --> 00:49:21,830 digunakan sebagai format specifier itu. 1026 00:49:21,830 --> 00:49:25,420 >> Apabila anda menggunakan peratus di luar yang dalam ungkapan matematik, 1027 00:49:25,420 --> 00:49:29,910 ia operator modulo untuk modular arithmetic-- untuk tujuan kami 1028 00:49:29,910 --> 00:49:33,650 di sini, hanya bermakna, apakah baki x dibahagikan dengan y? 1029 00:49:33,650 --> 00:49:36,130 Jadi x dibahagikan dengan y x slash y. 1030 00:49:36,130 --> 00:49:38,220 Apa yang baki x dibahagikan dengan y? 1031 00:49:38,220 --> 00:49:41,780 Ia x mod y, sebagai seorang programmer akan berkata. 1032 00:49:41,780 --> 00:49:48,300 >> Jadi, jika saya tidak membuat sebarang kesilapan di sini, biarlah saya teruskan dan buat ints, majmuk, nice, 1033 00:49:48,300 --> 00:49:50,010 dan ints slash dot. 1034 00:49:50,010 --> 00:49:55,270 Dan mari kita pergi ke hadapan dan lakukan, katakan, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Baiklah, 1 campur 10 adalah 11, daftar. 1036 00:49:58,390 --> 00:50:01,240 1 tolak 10 adalah negatif 9, cek. 1037 00:50:01,240 --> 00:50:03,420 >> 1 kali 10 adalah 10, daftar. 1038 00:50:03,420 --> 00:50:07,090 1 dibahagikan dengan 10 is-- OK, kita akan melangkau satu. 1039 00:50:07,090 --> 00:50:09,480 Baki 1 dibahagikan dengan 10 adalah 1. 1040 00:50:09,480 --> 00:50:10,680 Itulah betul. 1041 00:50:10,680 --> 00:50:12,630 Tetapi ada pepijat di sini. 1042 00:50:12,630 --> 00:50:15,390 >> Demikian juga saya meletakkan saya menyerahkan, tidak betul. 1043 00:50:15,390 --> 00:50:16,670 Maksud saya, ia dekat kepada 0. 1044 00:50:16,670 --> 00:50:20,670 1 dibahagikan dengan 10, anda tahu, jika kita memotong beberapa sudut, pasti, ia adalah sifar. 1045 00:50:20,670 --> 00:50:28,050 Tetapi ia benar-benar perlu 1/10, 0,1, atau 0.10, 0,1000, atau sebagainya. 1046 00:50:28,050 --> 00:50:30,600 >> Ia tidak boleh benar-benar sifar. 1047 00:50:30,600 --> 00:50:35,990 Nah, ternyata bahawa komputer adalah melakukan literal apa yang kita memberitahu ia lakukan. 1048 00:50:35,990 --> 00:50:39,460 Kami sedang melakukan matematik seperti x dibahagikan dengan y. 1049 00:50:39,460 --> 00:50:44,680 Dan kedua-dua x dan y, setiap baris kod sebelum ini, adalah integer. 1050 00:50:44,680 --> 00:50:50,440 >> Lebih-lebih lagi, pada baris 15, kami memberitahu printf, hey, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 integer, plug-in integer, plug-in integer-- yang khusus 1052 00:50:54,230 --> 00:50:57,580 x, dan kemudian y, dan kemudian x dibahagikan dengan y. x dan y adalah ints. 1053 00:50:57,580 --> 00:50:59,060 Kita baik di sana. 1054 00:50:59,060 --> 00:51:01,250 >> Tetapi apa yang x dibahagikan dengan x? 1055 00:51:01,250 --> 00:51:06,790 x dibahagikan dengan y perlu, matematik, 1/10, atau 0.1, 1056 00:51:06,790 --> 00:51:11,600 yang merupakan nombor sebenar, nombor nyata mempunyai, berpotensi, titik perpuluhan. 1057 00:51:11,600 --> 00:51:13,230 Ia bukan integer. 1058 00:51:13,230 --> 00:51:18,290 >> Tetapi apa yang paling dekat integer untuk 1/10, atau 0.1? 1059 00:51:18,290 --> 00:51:21,114 Ya, ia jenis adalah sifar. 1060 00:51:21,114 --> 00:51:22,030 0.1 adalah seperti ini banyak. 1061 00:51:22,030 --> 00:51:22,890 Dan 1 adalah sebanyak ini. 1062 00:51:22,890 --> 00:51:25,870 Jadi 1/10 lebih hampir kepada 0 daripada ia adalah untuk satu. 1063 00:51:25,870 --> 00:51:30,800 >> Dan supaya apa yang C lakukan untuk us-- jenis kerana kami diberitahu ia supaya- 1064 00:51:30,800 --> 00:51:32,600 adalah memendekkan integer itu. 1065 00:51:32,600 --> 00:51:40,540 Ia mengambil nilai, yang sekali lagi adalah sepatutnya menjadi sesuatu yang seperti 0,1000, 1066 00:51:40,540 --> 00:51:41,800 0 dan sebagainya. 1067 00:51:41,800 --> 00:51:45,320 Dan ia memendekkan segala-galanya selepas titik perpuluhan 1068 00:51:45,320 --> 00:51:47,510 supaya semua ini barangan, kerana ia tidak 1069 00:51:47,510 --> 00:51:51,910 dimuatkan dalam konsep integer, yang hanya beberapa seperti -1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 atas dan ke bawah, ia melemparkan segala-galanya selepas titik perpuluhan kerana anda 1071 00:51:55,830 --> 00:51:59,020 tidak boleh muat titik perpuluhan dalam integer dengan definisi. 1072 00:51:59,020 --> 00:52:01,290 >> Jadi jawapan di sini adalah sifar. 1073 00:52:01,290 --> 00:52:02,600 Jadi bagaimana kita menetapkan ini? 1074 00:52:02,600 --> 00:52:04,400 Kita perlu penyelesaian yang lain bersama-sama. 1075 00:52:04,400 --> 00:52:06,880 Dan kita boleh melakukan ini, seperti berikut. 1076 00:52:06,880 --> 00:52:12,820 >> Biar saya pergi ke hadapan dan mencipta yang baru fail, yang satu ini dipanggil floats.c. 1077 00:52:12,820 --> 00:52:16,500 Dan menyimpannya di sini di direktori yang sama, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Dan biarlah saya pergi ke hadapan dan salinan beberapa kod itu daripada awal. 1080 00:52:23,260 --> 00:52:27,690 >> Tetapi bukannya mendapat int, mari kita buat ini. 1081 00:52:27,690 --> 00:52:31,037 Berikan saya nilai mata terapung dipanggil x. di mana titik terapung 1082 00:52:31,037 --> 00:52:33,370 nilai hanya literal sesuatu dengan titik terapung. 1083 00:52:33,370 --> 00:52:34,410 Ia boleh bergerak ke kiri, ke kanan. 1084 00:52:34,410 --> 00:52:35,530 Ia adalah satu nombor nyata. 1085 00:52:35,530 --> 00:52:38,050 >> Dan biarlah saya tidak memanggil mendapatkan int, tetapi mendapat apungan, 1086 00:52:38,050 --> 00:52:41,420 yang juga adalah antara menu pilihan di perpustakaan C250 itu. 1087 00:52:41,420 --> 00:52:43,220 Mari kita mengubah y kepada apungan. 1088 00:52:43,220 --> 00:52:45,000 Jadi ini menjadi mendapatkan apung. 1089 00:52:45,000 --> 00:52:47,620 >> Dan kini, kita tidak mahu pasangkan ints. 1090 00:52:47,620 --> 00:52:53,130 Ternyata kita perlu menggunakan peratus f untuk apungan, peratus f untuk apungan, 1091 00:52:53,130 --> 00:52:54,560 dan kini menyimpannya. 1092 00:52:54,560 --> 00:53:01,220 Dan kini, jari bersilang, membuat pelampung, nice, pelampung slash dot. 1093 00:53:01,220 --> 00:53:04,280 x akan menjadi salah 1. y Akan menjadi 10 lagi. 1094 00:53:04,280 --> 00:53:08,240 >> Dan, nice, OK samping itu saya adalah betul. 1095 00:53:08,240 --> 00:53:10,240 Saya berharap untuk lebih, tetapi saya terlupa untuk menulisnya. 1096 00:53:10,240 --> 00:53:13,250 Jadi mari kita pergi dan menetapkan kesilapan ini logik. 1097 00:53:13,250 --> 00:53:16,280 >> Mari kita teruskan dan merebut berikut. 1098 00:53:16,280 --> 00:53:18,080 Kami hanya akan melakukan satu salinan kecil dan tampal. 1099 00:53:18,080 --> 00:53:20,080 Dan saya akan berkata tolak. 1100 00:53:20,080 --> 00:53:21,890 >> Dan saya akan berkata kali. 1101 00:53:21,890 --> 00:53:24,060 Dan saya akan mengatakan dibahagikan. 1102 00:53:24,060 --> 00:53:28,240 Dan saya tidak akan melakukan modulo, yang tidak begitu germane sini, 1103 00:53:28,240 --> 00:53:33,690 dibahagikan dengan f, dan masa plus-- OK, mari kita buat ini lagi. 1104 00:53:33,690 --> 00:53:44,210 >> Membuat pelampung, pelampung slash dot, dan 1, 10, dan- bagus, tidak, OK. 1105 00:53:44,210 --> 00:53:45,250 Jadi saya bodoh. 1106 00:53:45,250 --> 00:53:47,000 Jadi ini adalah perkara biasa dalam bidang sains komputer 1107 00:53:47,000 --> 00:53:49,780 melakukan kesilapan bodoh seperti ini. 1108 00:53:49,780 --> 00:53:53,100 >> Untuk tujuan pedagogi, apa yang saya benar-benar mahu lakukan 1109 00:53:53,100 --> 00:53:57,410 telah menukar ilmu di sini untuk tambah, tolak, untuk kali, 1110 00:53:57,410 --> 00:54:01,140 dan untuk membahagikan, kerana anda diharapkan perasan semasa latihan ini. 1111 00:54:01,140 --> 00:54:04,700 Jadi sekarang mari kita menyusun semula ini program, melakukan terapung slash dot. 1112 00:54:04,700 --> 00:54:07,950 >> Dan untuk kali ketiga, mari kita melihat jika ia memenuhi jangkaan saya. 1113 00:54:07,950 --> 00:54:21,480 1, 10, memasuki, ya, OK, 1,000, dibahagikan dengan 10,000, adalah 0,100000. 1114 00:54:21,480 --> 00:54:24,952 Dan ternyata kita boleh mengawal berapa banyak nombor-nombor selepas titik-titik perpuluhan. 1115 00:54:24,952 --> 00:54:25,660 Kami benar-benar akan. 1116 00:54:25,660 --> 00:54:26,790 Kami akan kembali kepada itu. 1117 00:54:26,790 --> 00:54:28,440 >> Tetapi sekarang, sebenarnya, matematik adalah betul. 1118 00:54:28,440 --> 00:54:30,090 Jadi, sekali lagi, apa yang bisa dibesarkan di sini? 1119 00:54:30,090 --> 00:54:33,050 Ia ternyata bahawa dalam C, terdapat bukan sahaja hanya strings-- dan, sebenarnya, 1120 00:54:33,050 --> 00:54:36,120 tidak benar-benar, kerana kita menambah mereka yang mempunyai perpustakaan CS50. 1121 00:54:36,120 --> 00:54:37,710 Tetapi tidak hanya ints. 1122 00:54:37,710 --> 00:54:38,990 >> Terdapat juga terapung. 1123 00:54:38,990 --> 00:54:42,810 Dan ternyata sekumpulan data lain jenis juga, bahawa kami akan menggunakan tidak lama lagi. 1124 00:54:42,810 --> 00:54:46,270 Rupa-rupanya, jika anda mahu satu watak, bukan rentetan aksara, 1125 00:54:46,270 --> 00:54:47,610 anda boleh menggunakan hanya char. 1126 00:54:47,610 --> 00:54:52,350 >> Ternyata bahawa jika anda mahu bool, nilai Boolean, benar atau palsu sahaja, 1127 00:54:52,350 --> 00:54:56,840 terima kasih kepada perpustakaan CS50, kami telah ditambah kepada C Jenis data bool juga. 1128 00:54:56,840 --> 00:54:59,180 Tetapi ia juga hadir dalam bahasa-bahasa lain juga. 1129 00:54:59,180 --> 00:55:04,130 Dan ternyata bahawa kadang-kadang anda perlu nombor yang lebih besar kemudian datang secara lalai 1130 00:55:04,130 --> 00:55:05,210 dengan ints dan terapung. 1131 00:55:05,210 --> 00:55:10,590 >> Dan, sebenarnya, dua adalah sebilangan yang menggunakan tidak 32 bit, tetapi 64 bit. 1132 00:55:10,590 --> 00:55:14,990 Dan panjang panjang adalah nombor yang menggunakan bukan 32, bit tetapi 64 bit, 1133 00:55:14,990 --> 00:55:19,190 masing-masing, untuk titik terapung nilai-nilai dan bilangan bulat, masing-masing. 1134 00:55:19,190 --> 00:55:22,780 Jadi mari kita sebenarnya kini melihat ini dalam tindakan. 1135 00:55:22,780 --> 00:55:26,150 >> Saya akan pergi ke hadapan di sini dan menyiapkan satu program lain. 1136 00:55:26,150 --> 00:55:32,020 Di sini, saya akan pergi ke hadapan dan boleh dilakukan termasuk CS50.h. 1137 00:55:32,020 --> 00:55:34,910 Dan biarlah saya pergi, termasuk standard io.h. 1138 00:55:34,910 --> 00:55:37,320 >> Dan anda akan melihat sesuatu yang funky yang sedang berlaku di sini. 1139 00:55:37,320 --> 00:55:40,592 Ia bukan warna pengekodan perkara dalam dengan cara yang sama seperti yang berlaku sebelum ini. 1140 00:55:40,592 --> 00:55:43,550 Dan ternyata, itu kerana saya tidak memberikan perkara yang nama fail. 1141 00:55:43,550 --> 00:55:47,270 >> Saya akan memanggil satu ini sizeof.c, dan tekan Simpan. 1142 00:55:47,270 --> 00:55:51,039 Dan perhatikan apa yang berlaku kepada saya sangat kod putih terhadap yang latar belakang hitam. 1143 00:55:51,039 --> 00:55:52,830 Sekarang, sekurang-kurangnya ada beberapa ungu di sana. 1144 00:55:52,830 --> 00:55:54,490 Dan ia adalah sintaks diserlahkan. 1145 00:55:54,490 --> 00:55:57,700 >> Ini kerana, agak mudah, saya telah kepada IDE jenis fail 1146 00:55:57,700 --> 00:56:01,060 ia adalah dengan memberi nama, dan khusus sambungan fail. 1147 00:56:01,060 --> 00:56:03,620 Sekarang, mari kita pergi ke hadapan dan melakukan ini. 1148 00:56:03,620 --> 00:56:08,910 Saya akan pergi ke hadapan dan sangat hanya mencetak bool yang following-- 1149 00:56:08,910 --> 00:56:11,080 adalah peratus LU. 1150 00:56:11,080 --> 00:56:12,950 >> Kami akan kembali kepada bahawa dalam hanya seketika. 1151 00:56:12,950 --> 00:56:15,840 Dan kemudian saya akan saiz cetak bool. 1152 00:56:15,840 --> 00:56:18,170 Dan sekarang, hanya untuk menyelamatkan diri saya sedikit masa, saya 1153 00:56:18,170 --> 00:56:20,280 akan melakukan keseluruhannya sekumpulan ini sekaligus. 1154 00:56:20,280 --> 00:56:24,620 Dan, khususnya, saya akan menukar ini kepada char dan char. 1155 00:56:24,620 --> 00:56:27,760 Yang ini, saya akan menukar kepada double dan berganda. 1156 00:56:27,760 --> 00:56:31,440 >> Yang ini, saya akan menukar kepada apungan dan apungan. 1157 00:56:31,440 --> 00:56:35,670 Yang ini, saya akan menukar kepada int dan int. 1158 00:56:35,670 --> 00:56:38,660 Dan yang satu ini, saya akan untuk menukar kepada panjang panjang. 1159 00:56:38,660 --> 00:56:40,840 Dan ia masih mengambil masa yang lama, panjang panjang. 1160 00:56:40,840 --> 00:56:44,572 >> Dan kemudian, akhir sekali, saya memberi diri saya terlalu banyak, tali. 1161 00:56:44,572 --> 00:56:47,030 Ia ternyata bahawa dalam C, ada pengendali khas yang dipanggil 1162 00:56:47,030 --> 00:56:50,260 saiz itu secara literal akan, apabila berjalan, 1163 00:56:50,260 --> 00:56:52,099 beritahu kami saiz setiap pembolehubah ini. 1164 00:56:52,099 --> 00:56:53,890 Dan ini adalah cara yang, sekarang, kita boleh menyambung semula 1165 00:56:53,890 --> 00:56:57,140 untuk perbincangan minggu lepas data dan perwakilan. 1166 00:56:57,140 --> 00:57:00,330 >> Biar saya pergi ke hadapan dan menyusun saiz saiz slash dot. 1167 00:57:00,330 --> 00:57:01,210 Dan mari kita lihat. 1168 00:57:01,210 --> 00:57:05,210 Ia ternyata bahawa dalam C, khusus kepada CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 khusus kepada sistem operasi Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 yang merupakan operasi 64-bit sistem dalam kes ini, 1171 00:57:11,100 --> 00:57:14,189 bool akan menggunakan satu bait ruang. 1172 00:57:14,189 --> 00:57:16,480 Itulah bagaimana saiz diukur, tidak dalam bit, tetapi dalam bait. 1173 00:57:16,480 --> 00:57:18,690 Dan ingat bahawa satu bait adalah lapan bit. 1174 00:57:18,690 --> 00:57:22,030 Jadi bool, walaupun anda teknikal hanya memerlukan 0 atau 1, 1175 00:57:22,030 --> 00:57:24,092 ia sedikit membazir bagaimana kami telah melaksanakannya. 1176 00:57:24,092 --> 00:57:26,800 Ia sebenarnya akan menggunakan keseluruhan byte-- jadi semua sifar, adalah mungkin 1177 00:57:26,800 --> 00:57:31,050 semua orang, atau sesuatu seperti itu, atau hanya satu 1 antara lapan bit. 1178 00:57:31,050 --> 00:57:34,962 >> char A, sementara itu, yang digunakan untuk watak seperti watak Ascii seminggu lepas, 1179 00:57:34,962 --> 00:57:36,170 akan menjadi satu aksara. 1180 00:57:36,170 --> 00:57:42,340 Dan itu synchs memulakan idea kami ia menjadi tidak lebih daripada 256 bits-- sebaliknya, 1181 00:57:42,340 --> 00:57:45,360 synchs dengan ia sebenarnya tidak ada lebih lama daripada 8 bit, yang 1182 00:57:45,360 --> 00:57:47,450 memberikan kita sebanyak 256 nilai. 1183 00:57:47,450 --> 00:57:49,680 double A akan menjadi 8 bytes atau 64 bit. 1184 00:57:49,680 --> 00:57:50,510 >> float A ialah 4. 1185 00:57:50,510 --> 00:57:51,690 Int adalah 4. 1186 00:57:51,690 --> 00:57:52,980 A panjang, lama adalah 8. 1187 00:57:52,980 --> 00:57:54,716 Dan tali adalah 8. 1188 00:57:54,716 --> 00:57:55,840 Tetapi jangan bimbang tentang itu. 1189 00:57:55,840 --> 00:57:57,340 Kita akan mengupas kembali lapisan itu. 1190 00:57:57,340 --> 00:57:59,940 Ternyata, tali boleh lebih panjang daripada 8 bait. 1191 00:57:59,940 --> 00:58:02,310 >> Dan, sesungguhnya, kami telah menulis tali sudah, hello dunia, 1192 00:58:02,310 --> 00:58:03,700 lebih lama daripada 8 bait. 1193 00:58:03,700 --> 00:58:06,270 Tetapi kita akan kembali kepada bahawa dalam hanya seketika. 1194 00:58:06,270 --> 00:58:09,690 Tetapi mengambil yang jauh di sini adalah seperti berikut. 1195 00:58:09,690 --> 00:58:15,320 >> Mana-mana komputer hanya mempunyai terhingga jumlah memori dan ruang. 1196 00:58:15,320 --> 00:58:17,860 Anda hanya boleh menyimpan begitu banyak fail pada Mac atau PC anda. 1197 00:58:17,860 --> 00:58:23,030 Anda hanya boleh menyimpan begitu banyak program di RAM berjalan serentak, semestinya, walaupun 1198 00:58:23,030 --> 00:58:26,360 dengan ingatan maya, kerana anda mempunyai jumlah yang terhad RAM. 1199 00:58:26,360 --> 00:58:28,990 >> Dan hanya untuk picture-- jika anda tidak pernah membuka komputer riba 1200 00:58:28,990 --> 00:58:31,300 atau diperintahkan memori tambahan untuk komputer, anda 1201 00:58:31,300 --> 00:58:33,670 mungkin tidak tahu bahawa di dalam komputer anda 1202 00:58:33,670 --> 00:58:36,590 adalah sesuatu yang kelihatan yang kecil seperti ini. 1203 00:58:36,590 --> 00:58:40,540 Jadi ini adalah hanya sebuah syarikat biasa bernama Penting yang menjadikan RAM untuk komputer. 1204 00:58:40,540 --> 00:58:43,620 Dan RAM adalah di mana program tinggal semasa mereka berjalan. 1205 00:58:43,620 --> 00:58:46,630 >> Maka pada setiap Mac atau PC, apabila anda dua kali ganda klik program, dan ia membuka, 1206 00:58:46,630 --> 00:58:48,921 dan ia membuka beberapa dokumen Word atau sesuatu seperti itu, 1207 00:58:48,921 --> 00:58:51,764 ia menyimpan buat sementara waktu dalam RAM, kerana RAM adalah lebih cepat 1208 00:58:51,764 --> 00:58:53,680 daripada cakera keras anda, atau cakera keadaan pepejal anda. 1209 00:58:53,680 --> 00:58:56,600 Jadi ia hanya di mana program pergi tinggal semasa mereka berjalan, 1210 00:58:56,600 --> 00:58:58,060 atau apabila fail sedang digunakan. 1211 00:58:58,060 --> 00:59:00,890 >> Jadi, anda mempunyai perkara-perkara yang kelihatan seperti di dalam ini komputer riba anda, 1212 00:59:00,890 --> 00:59:03,320 atau perkara-perkara yang lebih besar sedikit bahagian dalam desktop anda. 1213 00:59:03,320 --> 00:59:07,440 Tetapi yang penting adalah anda hanya mempunyai beberapa terhingga perkara-perkara ini. 1214 00:59:07,440 --> 00:59:11,230 Dan ada hanya sejumlah terhingga perkakasan duduk di atas meja ini buat 1215 00:59:11,230 --> 00:59:11,730 di sini. 1216 00:59:11,730 --> 00:59:15,920 >> Jadi, pasti, kita tidak boleh menyimpan nombor panjang tak terhingga. 1217 00:59:15,920 --> 00:59:19,030 Dan, lagi, jika anda berfikir kembali kepada sekolah rendah, berapa banyak digit boleh 1218 00:59:19,030 --> 00:59:21,400 anda perlu ke kanan titik perpuluhan? 1219 00:59:21,400 --> 00:59:24,680 Untuk itu, berapa banyak digit boleh anda mempunyai di sebelah kiri titik perpuluhan? 1220 00:59:24,680 --> 00:59:26,300 Betul, tak terhingga banyaknya. 1221 00:59:26,300 --> 00:59:30,840 >> Sekarang, kita manusia hanya mungkin tahu bagaimana cara mengucapkan juta, 1222 00:59:30,840 --> 00:59:34,990 dan bilion, trilion, dan quadrillion dan triliun. 1223 00:59:34,990 --> 00:59:39,370 Dan saya menolak had saya understanding-- atau my-- Saya faham 1224 00:59:39,370 --> 00:59:41,110 nombor, tetapi saya sebutan nombor. 1225 00:59:41,110 --> 00:59:44,720 Tetapi mereka boleh mendapatkan besar tak terhingga dengan tak terhingga banyaknya digit ke kiri 1226 00:59:44,720 --> 00:59:47,050 atau di sebelah kanan titik perpuluhan. 1227 00:59:47,050 --> 00:59:50,040 >> Tetapi komputer hanya mempunyai jumlah terhingga ingatan, 1228 00:59:50,040 --> 00:59:53,510 beberapa terhingga transistor, yang beberapa terhingga mentol lampu di dalam. 1229 00:59:53,510 --> 00:59:57,350 Jadi apa yang berlaku apabila anda kehabisan ruang? 1230 00:59:57,350 --> 00:59:59,620 Dalam erti kata lain, jika anda berfikir kembali minggu lepas 1231 00:59:59,620 --> 01:00:03,160 apabila kita bercakap tentang nombor diri mereka diwakili dalam binari, 1232 01:00:03,160 --> 01:00:05,480 andaikan bahawa kita telah mendapat nilai ini 8-bit di sini. 1233 01:00:05,480 --> 01:00:08,290 >> Dan kita mempunyai tujuh 1 dan satu 0. 1234 01:00:08,290 --> 01:00:10,827 Dan andaikan bahawa kita mahu untuk menambah 1 kepada nilai ini. 1235 01:00:10,827 --> 01:00:12,410 Ini adalah nombor yang sangat besar sekarang. 1236 01:00:12,410 --> 01:00:16,610 >> Ini adalah 254, jika saya ingat matematik dari minggu lepas betul. 1237 01:00:16,610 --> 01:00:19,480 Tetapi bagaimana jika saya menukar yang paling kanan 0 kepada 1? 1238 01:00:19,480 --> 01:00:22,800 Seluruh terhitung banyaknya, dari Sudah tentu, menjadi lapan 1. 1239 01:00:22,800 --> 01:00:24,050 Oleh itu, kita masih baik. 1240 01:00:24,050 --> 01:00:27,204 >> Dan itu mungkin mewakili 255, walaupun bergantung kepada konteks 1241 01:00:27,204 --> 01:00:29,120 ia sebenarnya boleh mewakili nombor negatif. 1242 01:00:29,120 --> 01:00:31,240 Tetapi lebih kepada yang masa yang lain. 1243 01:00:31,240 --> 01:00:34,220 Ini berasa seperti ia mengenai setinggi saya boleh mengira. 1244 01:00:34,220 --> 01:00:35,290 >> Sekarang, ia hanya 8 bit. 1245 01:00:35,290 --> 01:00:38,170 Dan Mac saya, sesungguhnya mempunyai cara lebih daripada 8 bit memori. 1246 01:00:38,170 --> 01:00:39,170 Tetapi ia mempunyai terhingga. 1247 01:00:39,170 --> 01:00:43,230 Jadi hujah yang sama berlaku, walaupun kita mempunyai lebih daripada orang-orang ini pada skrin. 1248 01:00:43,230 --> 01:00:47,020 >> Tetapi apa yang berlaku jika anda menyimpan nombor ini, 255, 1249 01:00:47,020 --> 01:00:49,290 dan anda mahu mengira 1 bit yang lebih tinggi? 1250 01:00:49,290 --> 01:00:51,600 Anda mahu pergi 255-256. 1251 01:00:51,600 --> 01:00:55,800 Masalahnya, sudah tentu, adalah bahawa jika anda mula mengira pada sifar seperti minggu lepas, 1252 01:00:55,800 --> 01:00:59,670 anda tidak boleh dikira sebagai tinggi 256, apatah lagi 257, 1253 01:00:59,670 --> 01:01:02,584 apatah lagi 258, m kerana apa yang berlaku apabila anda menambah 1? 1254 01:01:02,584 --> 01:01:05,000 Jika anda melakukan sekolah rendah lama pendekatan, anda meletakkan 1 di sini, 1255 01:01:05,000 --> 01:01:08,150 dan kemudian 1 tambah 1 adalah 2, tetapi itu benar-benar sifar, anda membawa 1, 1256 01:01:08,150 --> 01:01:09,695 membawa 1, membawa 1. 1257 01:01:09,695 --> 01:01:12,620 Semua perkara-perkara ini, ini 1, pergi ke sifar. 1258 01:01:12,620 --> 01:01:17,820 Dan anda menggulung, ya, sebagai seorang menegaskan, 1 di sebelah kiri. 1259 01:01:17,820 --> 01:01:22,540 Tetapi semua yang anda boleh benar-benar melihat dan dimuatkan dalam memori 1260 01:01:22,540 --> 01:01:27,960 hanya lapan 0, yang adalah untuk mengatakan pada satu ketika jika anda, komputer, 1261 01:01:27,960 --> 01:01:32,490 cuba mengira cukup tinggi, anda berada akan membalut di sekitar, ia akan kelihatan, 1262 01:01:32,490 --> 01:01:35,850 kepada sifar, atau mungkin juga negatif nombor, yang lebih rendah daripada sifar. 1263 01:01:35,850 --> 01:01:37,260 >> Dan kita jenis boleh melihat ini. 1264 01:01:37,260 --> 01:01:39,900 Biar saya pergi ke hadapan dan menulis program cepat yang sebenar di sini. 1265 01:01:39,900 --> 01:01:43,690 Biar saya pergi ke hadapan dan menulis program yang dikenali sebagai limpahan. 1266 01:01:43,690 --> 01:01:49,980 Termasuk CS50.h, termasuk standard IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Saya benar-benar terlepas penonjolan sintaks saya. 1268 01:01:51,730 --> 01:01:54,440 Jadi mari kita menyimpan ini sebagai overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> Dan sekarang int void-- utama dan tidak lama, kami akan 1270 01:01:57,084 --> 01:01:59,500 kembali kepada menjelaskan mengapa kita terus menulis tidak sah utama int. 1271 01:01:59,500 --> 01:02:02,080 Tetapi untuk sekarang, mari kita hanya melakukan , mengambil ia untuk diberikan. 1272 01:02:02,080 --> 01:02:06,200 Mari kita memberikan diri saya int, dan memulakan ia pada 0. 1273 01:02:06,200 --> 01:02:11,716 >> Mari kita kemudian lakukan untuk int i mendapatkan zero-- sebenarnya, mari kita buat gelung tak terhingga 1274 01:02:11,716 --> 01:02:12,590 dan lihat apa yang berlaku. 1275 01:02:12,590 --> 01:02:22,440 Walaupun benar, maka mari kita mencetak n adalah peratus i, garis sendeng terbalik n, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Tetapi, sekarang, mari kita buat n mendapat n plus 1. 1277 01:02:27,200 --> 01:02:29,660 >> Jadi dalam erti kata lain, pada setiap lelaran gelung tak terhingga ini, 1278 01:02:29,660 --> 01:02:32,550 mari kita nilai n ini, dan menambah 1 kepadanya, dan kemudian 1279 01:02:32,550 --> 01:02:34,350 menyimpan hasil kembali dalam n di sebelah kiri. 1280 01:02:34,350 --> 01:02:37,150 Dan, sebenarnya, kita telah melihat sintaks sedikit seperti ini, secara ringkas. 1281 01:02:37,150 --> 01:02:39,730 Satu helah sejuk adalah sebaliknya menulis semua ini, 1282 01:02:39,730 --> 01:02:42,770 anda benar-benar boleh mengatakan yang plus n sama dengan 1. 1283 01:02:42,770 --> 01:02:47,480 >> Atau jika anda benar-benar mahu menjadi mewah, anda boleh mengatakan n plus plus koma bertitik. 1284 01:02:47,480 --> 01:02:50,130 Tetapi dua zaman akhir ini hanya apa yang kita akan memanggil gula sintaktik 1285 01:02:50,130 --> 01:02:50,790 untuk perkara yang pertama. 1286 01:02:50,790 --> 01:02:53,456 >> Perkara pertama adalah lebih jelas, betul-betul halus, benar-benar betul. 1287 01:02:53,456 --> 01:02:55,470 Tetapi ini adalah lebih biasa, saya akan katakan. 1288 01:02:55,470 --> 01:02:57,210 Oleh itu, kita akan melakukan ini hanya untuk seketika. 1289 01:02:57,210 --> 01:03:01,685 >> Sekarang mari kita membuat limpahan, yang berbunyi agak menyenangkan, slash limpahan dot. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Mari kita lihat, n semakin cukup besar. 1292 01:03:09,852 --> 01:03:11,310 Tetapi mari kita fikir, berapa besar n boleh dapat? 1293 01:03:11,310 --> 01:03:12,870 >> n adalah int. 1294 01:03:12,870 --> 01:03:16,400 Kami melihat masa lalu dengan saiz contoh yang int adalah empat bait. 1295 01:03:16,400 --> 01:03:22,070 Kita tahu dari minggu lepas, empat bait adalah 32 bit, kerana 8 kali 4, itu 32. 1296 01:03:22,070 --> 01:03:23,460 Itu akan menjadi 4 bilion. 1297 01:03:23,460 --> 01:03:25,802 >> Dan kita sehingga 800,000. 1298 01:03:25,802 --> 01:03:28,510 Ini akan mengambil selama-lamanya untuk mengira setinggi saya mungkin boleh. 1299 01:03:28,510 --> 01:03:30,635 Jadi, saya akan pergi ke hadapan, kerana anda mungkin tidak lama, 1300 01:03:30,635 --> 01:03:34,910 dan memukul Kawalan C-- terus-terang, Kawalan C, banyak, di mana Control C umumnya 1301 01:03:34,910 --> 01:03:36,034 cara membatalkan. 1302 01:03:36,034 --> 01:03:38,200 Malangnya, kerana ini sedang berjalan di awan, 1303 01:03:38,200 --> 01:03:41,190 kadang-kadang awan adalah meludah keluar begitu banyak barangan, 1304 01:03:41,190 --> 01:03:44,180 begitu banyak output, ia akan mengambil sedikit masa untuk input saya 1305 01:03:44,180 --> 01:03:45,630 untuk sampai ke awan. 1306 01:03:45,630 --> 01:03:49,240 Jadi, walaupun saya memukul Kawalan C Beberapa saat yang lalu, 1307 01:03:49,240 --> 01:03:53,110 ini adalah pasti sebelah kesan gelung tak terhingga. 1308 01:03:53,110 --> 01:03:56,070 >> Dan sebagainya dalam kes-kes tersebut, kami akan meninggalkan yang berkenaan. 1309 01:03:56,070 --> 01:03:59,050 Dan kita akan menambah satu lagi tetingkap terminal di sini 1310 01:03:59,050 --> 01:04:03,186 dengan ditambah, yang sudah tentu tidak seperti itu, kerana ia masih berfikir. 1311 01:04:03,186 --> 01:04:05,310 Dan mari kita pergi ke hadapan dan menjadi sedikit lebih munasabah. 1312 01:04:05,310 --> 01:04:07,768 >> Saya akan pergi ke hadapan dan melakukan ini hanya terhingga banyak kali. 1313 01:04:07,768 --> 01:04:10,047 Mari kita gunakan untuk gelung, yang saya katakan sebelum ini. 1314 01:04:10,047 --> 01:04:10,630 Mari lakukan ini. 1315 01:04:10,630 --> 01:04:13,430 Berikan saya satu lagi pembolehubah int i mendapat 0. 1316 01:04:13,430 --> 01:04:17,430 i adalah kurang daripada, katakan, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 Dan sekarang mari saya pergi ke hadapan dan cetak keluar n adalah peratus i, koma n. 1318 01:04:24,010 --> 01:04:27,547 Dan kemudian n-- ini masih akan mengambil selama-lamanya. 1319 01:04:27,547 --> 01:04:28,130 Mari lakukan ini. 1320 01:04:28,130 --> 01:04:30,620 >> n mendapat n kali 2. 1321 01:04:30,620 --> 01:04:34,140 Atau kita boleh menjadi mewah dan melakukan kali bersamaan 2. 1322 01:04:34,140 --> 01:04:37,120 Tetapi mari kita hanya mengatakan n sama sendiri, kali 2. 1323 01:04:37,120 --> 01:04:39,321 Dengan kata lain, dalam hal ini versi baru program ini, 1324 01:04:39,321 --> 01:04:41,820 Saya tidak mahu menunggu selama-lamanya dari seperti 800,000 hingga 4 bilion. 1325 01:04:41,820 --> 01:04:43,070 Mari kita mendapatkan lebih ini dengan. 1326 01:04:43,070 --> 01:04:44,920 >> Mari kita sebenarnya menggandakan n setiap kali. 1327 01:04:44,920 --> 01:04:47,660 Yang, ingat, dua kali ganda adalah bertentangan dengan mempunyai, sudah tentu. 1328 01:04:47,660 --> 01:04:50,035 Dan bahawasanya minggu lepas kami mempunyai sesuatu sekali lagi, dan sekali lagi, 1329 01:04:50,035 --> 01:04:52,200 dan sekali lagi, super cepat, dua kali ganda pasti akan 1330 01:04:52,200 --> 01:04:58,080 membawa kita dari 1 hingga yang paling besar mungkin nilai yang kita boleh bergantung kepada dengan int. 1331 01:04:58,080 --> 01:04:59,750 >> Jadi mari kita buat betul-betul ini. 1332 01:04:59,750 --> 01:05:01,720 Dan kami akan kembali kepada ini tidak lama lagi. 1333 01:05:01,720 --> 01:05:04,180 Tetapi ini, sekali lagi, adalah sama seperti blok berulang dalam Scratch. 1334 01:05:04,180 --> 01:05:05,600 Dan anda akan menggunakan ini tidak lama lagi. 1335 01:05:05,600 --> 01:05:10,170 >> Ini hanya bermakna kiraan dari sifar sehingga, tetapi tidak sama, hingga 64. 1336 01:05:10,170 --> 01:05:14,285 Dan pada setiap lelaran ini gelung, hanya menyimpan menokok i. 1337 01:05:14,285 --> 01:05:18,990 Jadi i ++ - dan membina umum ini pada baris 7 hanya cara yang super biasa 1338 01:05:18,990 --> 01:05:22,290 mengulangi beberapa baris kod, beberapa beberapa kali. 1339 01:05:22,290 --> 01:05:23,362 Yang baris kod? 1340 01:05:23,362 --> 01:05:25,570 Ini pendakap kerinting, kerana anda mungkin telah dikumpulkan dari sekarang, 1341 01:05:25,570 --> 01:05:26,780 ertinya, lakukan yang berikut. 1342 01:05:26,780 --> 01:05:29,510 >> Ada dalam Scratch seperti, apabila ia mempunyai blok kuning 1343 01:05:29,510 --> 01:05:32,680 dan warna-warna lain yang sejenis memeluk atau memeluk blok lain. 1344 01:05:32,680 --> 01:05:34,750 Itulah yang mereka kerinting pendakap lakukan di sini. 1345 01:05:34,750 --> 01:05:40,200 Jadi, jika saya mendapat sintaks saya right-- anda boleh melihat simbol lobak merah dalam cara C 1346 01:05:40,200 --> 01:05:42,706 itulah berapa kali saya cuba untuk menyelesaikan masalah ini. 1347 01:05:42,706 --> 01:05:45,330 Jadi mari kita membuang satu yang sama sekali, dan ditutup pada tetingkap. 1348 01:05:45,330 --> 01:05:46,520 Dan kami akan menggunakan yang baru. 1349 01:05:46,520 --> 01:05:51,980 Membuat limpahan, slash dot limpahan, Masukkan, semua hak, 1350 01:05:51,980 --> 01:05:53,090 ia kelihatan buruk pada mulanya. 1351 01:05:53,090 --> 01:05:56,200 Tetapi mari kita tinjau kembali dalam masa, kerana saya melakukan ini 64 kali. 1352 01:05:56,200 --> 01:05:58,700 >> Dan perhatikan kali pertama, n ialah 1. 1353 01:05:58,700 --> 01:06:03,110 kali kedua, n ialah 2, kemudian 4, kemudian 8, kemudian 16. 1354 01:06:03,110 --> 01:06:09,450 Dan ia seolah-olah bahawa sebaik sahaja Saya dapat kira-kira 1 bilion, 1355 01:06:09,450 --> 01:06:12,800 jika saya menggandakan lagi, yang perlu memberi saya 2 bilion. 1356 01:06:12,800 --> 01:06:14,980 Tetapi ternyata, ia adalah betul-betul di puncak itu. 1357 01:06:14,980 --> 01:06:18,930 >> Dan maka ia sebenarnya melimpah int dari 1 bilion 1358 01:06:18,930 --> 01:06:23,514 kepada kira-kira negatif 2 bilion, kerana integer, 1359 01:06:23,514 --> 01:06:25,430 tidak seperti kita nombor telah menganggap minggu lepas, 1360 01:06:25,430 --> 01:06:28,397 boleh kedua-dua positif dan negatif dalam realiti dan dalam komputer. 1361 01:06:28,397 --> 01:06:30,730 Dan jadi sekurang-kurangnya salah seorang daripada mereka bit berkesan dicuri. 1362 01:06:30,730 --> 01:06:34,190 Oleh itu, kita benar-benar hanya mempunyai 31 bit, atau 2 bilion nilai yang mungkin. 1363 01:06:34,190 --> 01:06:38,220 >> Tetapi untuk sekarang, bawa pulang yang agak semata-mata, apa nombor-nombor ini 1364 01:06:38,220 --> 01:06:42,280 dan apa sahaja yang matematik adalah, sesuatu yang buruk berlaku akhirnya, 1365 01:06:42,280 --> 01:06:46,980 lantaran akhirnya kamu cuba untuk abiad bit salah terlalu banyak kali. 1366 01:06:46,980 --> 01:06:51,060 Dan anda berkesan pergi dari semua 1 untuk mungkin semua 0, atau mungkin 1367 01:06:51,060 --> 01:06:54,260 hanya beberapa corak lain bahawa ia jelas, bergantung kepada konteks, 1368 01:06:54,260 --> 01:06:56,342 boleh ditafsirkan sebagai nombor negatif. 1369 01:06:56,342 --> 01:06:59,300 Dan supaya ia akan kelihatan saya yang paling tinggi boleh mengira dalam program tertentu 1370 01:06:59,300 --> 01:07:01,210 hanya kira-kira 1 bilion. 1371 01:07:01,210 --> 01:07:02,760 Tetapi ada penyelesaian separa di sini. 1372 01:07:02,760 --> 01:07:03,480 Awak tahu tak? 1373 01:07:03,480 --> 01:07:07,600 >> Biar saya beralih daripada int kepada panjang panjang. 1374 01:07:07,600 --> 01:07:10,633 Dan biarlah saya pergi ke hadapan di sini dan iaitu- saya akan mempunyai 1375 01:07:10,633 --> 01:07:12,290 menukar ini kepada yang tidak ditandatangani panjang. 1376 01:07:12,290 --> 01:07:16,860 Atau, mari kita lihat, saya tidak pernah ingat diri saya sendiri. 1377 01:07:16,860 --> 01:07:19,920 >> Mari kita pergi ke hadapan dan membuat limpahan. 1378 01:07:19,920 --> 01:07:21,860 Tidak, itu bukan sahaja, LLD, terima kasih. 1379 01:07:21,860 --> 01:07:23,430 Jadi kadang-kadang dilafaz boleh membantu. 1380 01:07:23,430 --> 01:07:27,550 Saya tidak ingat apa format yang specifier adalah untuk panjang panjang. 1381 01:07:27,550 --> 01:07:28,950 >> Tetapi, sesungguhnya, dilafaz memberitahu saya. 1382 01:07:28,950 --> 01:07:31,570 Green beberapa jenis yang baik, masih bermakna anda telah membuat kesilapan. 1383 01:07:31,570 --> 01:07:33,190 Ia meneka bahawa saya maksudkan LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Jadi biarlah saya mengambil ia nasihat, yang lama nombor perpuluhan lama, simpan itu. 1385 01:07:38,750 --> 01:07:43,190 Dan biarlah saya jalankan ia, titik mengurangkan limpahan, Enter. 1386 01:07:43,190 --> 01:07:45,020 Dan sekarang apa yang sejuk adalah ini. 1387 01:07:45,020 --> 01:07:49,140 >> Jika saya tatal kembali ke masa, kita masih mula mengira pada yang sama place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Notis, kita akan mendapat semua cara sehingga 1 bilion. 1390 01:07:54,860 --> 01:07:57,070 Tetapi kita selamat sampai ke 2 bilion. 1391 01:07:57,070 --> 01:08:01,300 >> Kemudian kita dapat 4 bilion, maka 8 bilion, 17 bilion. 1392 01:08:01,300 --> 01:08:03,340 Dan kita pergi lebih tinggi, dan yang lebih tinggi, dan lebih tinggi. 1393 01:08:03,340 --> 01:08:05,740 Akhirnya, ini, juga, rehat. 1394 01:08:05,740 --> 01:08:09,350 >> Akhirnya, dengan panjang panjang, iaitu nilai 64-bit, tidak 1395 01:08:09,350 --> 01:08:13,660 nilai 32-bit, jika kamu menghitung terlalu tinggi, anda membungkus 0. 1396 01:08:13,660 --> 01:08:16,410 Dan dalam kes ini, kita berlaku berakhir dengan nombor negatif. 1397 01:08:16,410 --> 01:08:17,550 >> Jadi ini adalah satu masalah. 1398 01:08:17,550 --> 01:08:20,439 Dan ternyata bahawa ini masalah tidak semua yang sukar difahami itu. 1399 01:08:20,439 --> 01:08:23,060 Walaupun saya telah sengaja mencetuskannya dengan kesilapan-kesilapan ini, 1400 01:08:23,060 --> 01:08:26,149 ternyata kita melihat ia jenis semua di sekeliling kita, atau sekurang-kurangnya sebahagian daripada kita lakukan. 1401 01:08:26,149 --> 01:08:28,939 >> Jadi dalam Lego Star Wars, jika anda pernah bermain permainan, 1402 01:08:28,939 --> 01:08:33,830 ternyata anda boleh pergi sekitar melanggar perkara dalam dunia LEGO, 1403 01:08:33,830 --> 01:08:36,640 dan mengumpul syiling, pada asasnya. 1404 01:08:36,640 --> 01:08:39,200 Dan jika anda pernah bermain permainan ini terlalu banyak masa, 1405 01:08:39,200 --> 01:08:42,630 sebagai individu yang tidak dinamakan ini di sini lakukan, jumlah 1406 01:08:42,630 --> 01:08:46,700 duit syiling yang anda boleh mengumpul , ia akan kelihatan, 4 bilion. 1407 01:08:46,700 --> 01:08:48,240 >> Kini, dengan ia sebenarnya bulat. 1408 01:08:48,240 --> 01:08:50,239 Jadi LEGO cuba menjaga perkara-perkara mesra pengguna. 1409 01:08:50,239 --> 01:08:53,779 Mereka tidak melakukannya tepat 2 untuk 32 kuasa, seminggu lalu. 1410 01:08:53,779 --> 01:08:55,310 Tetapi 4 bilion sebab. 1411 01:08:55,310 --> 01:08:58,979 Ia seolah-olah, berdasarkan maklumat ini, bahawa LEGO, dan syarikat yang 1412 01:08:58,979 --> 01:09:02,624 membuat perisian sebenar ini, memutuskan bahawa bilangan maksimum syiling 1413 01:09:02,624 --> 01:09:04,540 pengguna boleh mengumpul adalah, sememangnya, 4 bilion, 1414 01:09:04,540 --> 01:09:12,069 kerana mereka hak dalam kod mereka untuk menggunakan bukan yang panjang panjang, nampaknya, 1415 01:09:12,069 --> 01:09:16,140 tetapi hanya satu integer, yang tidak ditandatangani integer, hanya integer positif, yang 1416 01:09:16,140 --> 01:09:18,089 nilai max adalah lebih kurang itu. 1417 01:09:18,089 --> 01:09:19,380 Nah, di sini adalah satu lagi salah lucu. 1418 01:09:19,380 --> 01:09:23,500 Jadi, dalam permainan Tamadun, yang sebahagian dari kamu mungkin biasa, dengan 1419 01:09:23,500 --> 01:09:26,660 ternyata bahawa tahun lalu ada adalah bug dalam permainan ini di mana 1420 01:09:26,660 --> 01:09:28,750 jika anda memainkan peranan Gandhi dalam permainan, 1421 01:09:28,750 --> 01:09:34,020 bagi pihaknya yang sangat damai, sebaliknya adalah sangat, sangat 1422 01:09:34,020 --> 01:09:36,399 agresif, dalam beberapa keadaan. 1423 01:09:36,399 --> 01:09:40,529 Khususnya, cara bahawa Tamadun kerja-kerja adalah bahawa jika anda, pemain, 1424 01:09:40,529 --> 01:09:44,680 mengamalkan demokrasi, anda Rata agresif mendapat 1425 01:09:44,680 --> 01:09:48,130 decremented oleh dua, jadi tolak tolak, dan kemudian tolak tolak. 1426 01:09:48,130 --> 01:09:50,569 >> Jadi anda tolak 2 dari mengulanginya sebenar anda. 1427 01:09:50,569 --> 01:09:56,650 Malangnya, jika mengulanginya adalah mulanya 1, dan anda tolak 2 daripadanya 1428 01:09:56,650 --> 01:09:59,050 selepas menerima demokrasi sebagai Gandhi di sini mungkin 1429 01:09:59,050 --> 01:10:02,200 telah dilakukan, kerana dia sangat passive-- 1 pada skala agresif. 1430 01:10:02,200 --> 01:10:04,830 Tetapi jika dia mengamalkan demokrasi, maka dia pergi dari 1 hingga -1. 1431 01:10:04,830 --> 01:10:11,470 >> Malangnya, mereka menggunakan nombor yang tidak ditandatangani, 1432 01:10:11,470 --> 01:10:15,400 yang bermakna mereka dirawat walaupun negatif nombor seolah-olah mereka adalah positif. 1433 01:10:15,400 --> 01:10:19,780 Dan ternyata bahawa bersamaan positif negatif 1, 1434 01:10:19,780 --> 01:10:23,480 dalam program-program komputer biasa, 255. 1435 01:10:23,480 --> 01:10:27,250 Jadi, jika Gandhi mengamalkan demokrasi, dan oleh itu mempunyai 1436 01:10:27,250 --> 01:10:32,470 Rata agresif beliau menurun, ia sebenarnya gulung di sekeliling kepada 255 1437 01:10:32,470 --> 01:10:35,470 dan menjadikan dia yang paling watak agresif dalam permainan. 1438 01:10:35,470 --> 01:10:36,930 Jadi, anda boleh Google di atas ini. 1439 01:10:36,930 --> 01:10:39,380 Dan ia adalah, sesungguhnya, yang sengaja program bug, 1440 01:10:39,380 --> 01:10:43,010 tetapi itu memasuki agak tradisi sejak itu. 1441 01:10:43,010 --> 01:10:44,360 >> Itu sahaja yang menyeronokkan dan comel. 1442 01:10:44,360 --> 01:10:47,760 Lebih menakutkan ialah apabila sebenar peranti dunia sebenar, dan bukan permainan, 1443 01:10:47,760 --> 01:10:48,820 mempunyai ini bug sama. 1444 01:10:48,820 --> 01:10:54,500 Malah, hanya setahun yang lalu artikel datang maklumat mengenai Dreamliner Boeing 787. 1445 01:10:54,500 --> 01:10:56,850 >> Dan artikel pada mulanya pandang membaca batin sedikit. 1446 01:10:56,850 --> 01:11:01,480 Tetapi ia berkata demikian, perisian kelemahan yang terdapat pada Boeing 1447 01:11:01,480 --> 01:11:04,790 baru 787 Dreamliner jet mempunyai potensi untuk menyebabkan juruterbang 1448 01:11:04,790 --> 01:11:07,220 hilang kawalan pesawat, mungkin 1449 01:11:07,220 --> 01:11:11,750 dalam penerbangan, pegawai-pegawai FAA syarikat penerbangan memberi amaran baru-baru ini. 1450 01:11:11,750 --> 01:11:14,520 Ia adalah penentuan bahawa model 787 1451 01:11:14,520 --> 01:11:19,770 kapal terbang yang telah dikuasakan secara berterusan selama 248 hari 1452 01:11:19,770 --> 01:11:24,880 boleh kehilangan semua arus, AC, kuasa elektrik kerana penjana 1453 01:11:24,880 --> 01:11:28,892 unit kawalan, GCUs, pada masa yang sama pergi ke gagal mod selamat. 1454 01:11:28,892 --> 01:11:29,850 Ia adalah jenis kehilangan saya. 1455 01:11:29,850 --> 01:11:35,390 Tetapi memo yang dinyatakan, OK, sekarang saya mendapat bahawa, keadaan itu disebabkan oleh perisian yang 1456 01:11:35,390 --> 01:11:38,590 menangkis dalaman untuk kawalan penjana 1457 01:11:38,590 --> 01:11:44,860 unit yang akan melimpah selepas 248 hari kuasa berterusan. 1458 01:11:44,860 --> 01:11:47,070 Kami menerbitkan ini notis untuk mengelakkan kehilangan 1459 01:11:47,070 --> 01:11:49,300 semua AC elektrik kuasa, yang boleh mengakibatkan 1460 01:11:49,300 --> 01:11:50,980 kehilangan kawalan pesawat tersebut. 1461 01:11:50,980 --> 01:11:55,380 >> Jadi, secara literal, terdapat beberapa integer, atau beberapa jenis data yang setara, 1462 01:11:55,380 --> 01:11:57,960 digunakan dalam perisian dalam kapal terbang sebenar 1463 01:11:57,960 --> 01:12:00,756 bahawa jika anda menyimpan kapal terbang anda cukup lama, yang nampaknya 1464 01:12:00,756 --> 01:12:03,880 boleh berlaku jika anda hanya berjalan mereka sentiasa dan tidak pernah mencabut plag 1465 01:12:03,880 --> 01:12:06,810 kapal terbang anda, ia seolah-olah, atau membiarkan baterinya mati, 1466 01:12:06,810 --> 01:12:09,840 akhirnya akan mengira, dan ke atas, dan ke atas, dan ke atas, dan ke atas, dan ke atas. 1467 01:12:09,840 --> 01:12:12,150 >> Dan, dengan alam semula jadi, jumlah terhingga memori 1468 01:12:12,150 --> 01:12:15,880 akan melimpah, bergolek kembali ke sifar atau beberapa nilai negatif, 1469 01:12:15,880 --> 01:12:19,920 kesan sampingan yang merupakan realiti tampak sebenar 1470 01:12:19,920 --> 01:12:23,970 bahawa pesawat itu mungkin perlu yang akan reboot, berkesan, 1471 01:12:23,970 --> 01:12:27,290 atau mungkin jatuh lebih teruk lagi, kerana ia terbang. 1472 01:12:27,290 --> 01:12:29,230 Jadi ini jenis isu-isu masih dengan kami, 1473 01:12:29,230 --> 01:12:33,130 even-- ini adalah satu artikel 2015, semua lebih menakutkan 1474 01:12:33,130 --> 01:12:36,100 apabila anda tidak semestinya memahami, menghargai, atau menjangka 1475 01:12:36,100 --> 01:12:38,640 orang-orang jenis kesilapan. 1476 01:12:38,640 --> 01:12:42,030 >> Jadi, ternyata ada satu lain perkara yang buruk tentang perwakilan data. 1477 01:12:42,030 --> 01:12:47,080 Ia ternyata bahawa walaupun terapung adalah jenis cacat, kerana kereta berhias, juga, 1478 01:12:47,080 --> 01:12:51,440 Saya dicadangkan adalah 32 bit, atau mungkin 64 jika anda menggunakan dua kali ganda. 1479 01:12:51,440 --> 01:12:53,070 Tetapi itu masih terbatas. 1480 01:12:53,070 --> 01:12:57,070 >> Dan tangkapan adalah bahawa jika anda boleh meletakkan nombor terhingga nombor 1481 01:12:57,070 --> 01:12:59,460 selepas titik perpuluhan, tidak ada cara anda 1482 01:12:59,460 --> 01:13:02,690 boleh mewakili semua kemungkinan nombor yang kita telah diajar 1483 01:13:02,690 --> 01:13:04,990 dalam gred sekolah boleh wujud di dunia. 1484 01:13:04,990 --> 01:13:08,870 Komputer, pada dasarnya, perlu memilih subset daripada nombor-nombor 1485 01:13:08,870 --> 01:13:10,200 untuk mewakili dengan tepat. 1486 01:13:10,200 --> 01:13:12,450 >> Sekarang, komputer boleh pusingan mungkin sedikit, 1487 01:13:12,450 --> 01:13:17,900 dan boleh membolehkan anda untuk secara kasar kedai apa-apa nombor yang anda mungkin mungkin mahu. 1488 01:13:17,900 --> 01:13:20,940 Tetapi gerak hati, jika anda mempunyai nombor terhingga bit, 1489 01:13:20,940 --> 01:13:24,560 anda hanya boleh abiad mereka dalam pelbagai cara terhingga. 1490 01:13:24,560 --> 01:13:26,570 Jadi, anda tidak mungkin boleh menggunakan nombor yang terhad 1491 01:13:26,570 --> 01:13:29,880 daripada atur bit, corak sifar dan satu, 1492 01:13:29,880 --> 01:13:32,940 untuk mewakili tidak terhad beberapa nombor, 1493 01:13:32,940 --> 01:13:37,370 yang menunjukkan bahawa komputer mungkin baik boleh berbohong kepada kami kadang-kadang. 1494 01:13:37,370 --> 01:13:38,770 >> Malah, mari kita buat ini. 1495 01:13:38,770 --> 01:13:41,239 Biar saya pergi semula ke dalam CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Biar saya pergi ke hadapan dan mewujudkan program kecil 1497 01:13:43,030 --> 01:13:47,940 dipanggil ketakpersisan, untuk menunjukkan bahawa komputer adalah, sesungguhnya, tidak tepat. 1498 01:13:47,940 --> 01:13:51,910 >> Dan biarlah saya pergi ke hadapan dan mula dengan beberapa kod itu daripada sebelum ini, 1499 01:13:51,910 --> 01:13:53,830 dan kini hanya melakukan yang berikut. 1500 01:13:53,830 --> 01:14:03,640 Biar saya pergi ke hadapan dan melakukan printf, peratus f, garis sendeng terbalik n, 1 dibahagikan dengan 10. 1501 01:14:03,640 --> 01:14:07,430 Dalam erti kata lain, mari kita menyelam lebih mendalam dengan 1/10, seperti 1 dan dibahagikan dengan 10. 1502 01:14:07,430 --> 01:14:09,760 Sesungguhnya, komputer boleh mewakili 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Jadi mari kita pergi ke hadapan dan membuat ketakpersisan. 1504 01:14:13,620 --> 01:14:14,390 Mari kita lihat. 1505 01:14:14,390 --> 01:14:16,210 Format menentukan jenis kelamin. 1506 01:14:16,210 --> 01:14:18,160 Tetapi hujah mempunyai jenis int. 1507 01:14:18,160 --> 01:14:19,040 Apa yang sedang berlaku? 1508 01:14:19,040 --> 01:14:21,970 >> Oh, menarik, jadi ia adalah satu pengajaran daripada sebelum ini. 1509 01:14:21,970 --> 01:14:26,050 Saya berkata, hey, pameran komputer saya apungan dengan peratus f. 1510 01:14:26,050 --> 01:14:28,200 Tetapi saya memberikan 2 ints. 1511 01:14:28,200 --> 01:14:31,120 Jadi ternyata, saya boleh menetapkan ini dalam beberapa cara. 1512 01:14:31,120 --> 01:14:38,430 >> Saya hanya boleh bertukar satu ke 1.0, dan 10 ke 10.0, yang akan, sesungguhnya, 1513 01:14:38,430 --> 01:14:42,390 mempunyai kesan menukar mereka ke dalam floats-- masih diharapkan 1514 01:14:42,390 --> 01:14:43,180 nombor yang sama. 1515 01:14:43,180 --> 01:14:45,880 Atau ia ternyata ada sesuatu kita akan melihat sekali lagi tidak lama lagi. 1516 01:14:45,880 --> 01:14:47,170 Anda boleh membuang nombor. 1517 01:14:47,170 --> 01:14:49,880 >> Anda boleh, dengan menggunakan kurungan ini ungkapan, anda boleh berkata, 1518 01:14:49,880 --> 01:14:52,560 hey, komputer, mengambil ini 10, yang saya tahu adalah int. 1519 01:14:52,560 --> 01:14:54,660 Tetapi merawat, sila, seolah-olah ia apungan. 1520 01:14:54,660 --> 01:14:56,680 Tetapi ini merasakan tidak perlu kompleks. 1521 01:14:56,680 --> 01:14:59,040 >> Untuk tujuan kita hari ini, mari kita secara literal 1522 01:14:59,040 --> 01:15:02,700 membuat mereka terapung mata yang dengan titik perpuluhan, seperti ini. 1523 01:15:02,700 --> 01:15:07,060 Biar saya pergi ke hadapan dan jalankan lagi, membuat ketakpersisan, baik, slash dot 1524 01:15:07,060 --> 01:15:08,870 ketakpersisan, masukkan. 1525 01:15:08,870 --> 01:15:10,990 OK, kita cari yang baik. 1526 01:15:10,990 --> 01:15:18,194 >> 1 dibahagikan dengan 10, menurut saya Mac sini, adalah, sememangnya, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Sekarang, saya telah diajar di sekolah rendah terdapat perlu nombor terhingga 0 ini. 1528 01:15:21,360 --> 01:15:23,151 Jadi mari kita sekurang-kurangnya cuba untuk melihat beberapa daripada mereka. 1529 01:15:23,151 --> 01:15:26,770 Ia ternyata bahawa printf adalah sedikit masih pelamun daripada kita telah menggunakan. 1530 01:15:26,770 --> 01:15:30,890 Ia ternyata anda tidak perlu untuk menentukan hanya peratus f, atau hanya peratus i. 1531 01:15:30,890 --> 01:15:33,830 Anda sebenarnya boleh menentukan beberapa pilihan kawalan di sini. 1532 01:15:33,830 --> 01:15:36,470 >> Secara khusus, saya akan berkata, hey, printf, 1533 01:15:36,470 --> 01:15:39,660 sebenarnya menunjukkan saya 10 titik perpuluhan. 1534 01:15:39,660 --> 01:15:40,820 Jadi ia kelihatan sedikit pelik. 1535 01:15:40,820 --> 01:15:42,845 Tetapi kamu berkata peratus, dot, berapa banyak nombor 1536 01:15:42,845 --> 01:15:44,970 anda mahu melihat selepas titik perpuluhan, dan kemudian f 1537 01:15:44,970 --> 01:15:48,340 untuk rata, hanya kerana itulah apa dokumentasi yang berkata. 1538 01:15:48,340 --> 01:15:50,080 Biar saya pergi ke hadapan dan menyelamatkan itu. 1539 01:15:50,080 --> 01:15:52,460 >> Dan perhatikan juga, saya mendapat letih menaip semula perkara. 1540 01:15:52,460 --> 01:15:55,900 Jadi saya hanya menubuhkan dan turun arrow pada kunci saya di sini. 1541 01:15:55,900 --> 01:15:58,710 Dan jika saya terus memukul, anda boleh melihat semua arahan 1542 01:15:58,710 --> 01:16:01,090 yang saya buat, atau tidak betul dibuat. 1543 01:16:01,090 --> 01:16:04,630 >> Dan saya akan pergi ke hadapan sekarang dan sebenarnya tidak menggunakan bahawa, nampaknya. 1544 01:16:04,630 --> 01:16:11,416 Membuat ketakpersisan, dot mengurangkan imprecision-- supaya 1545 01:16:11,416 --> 01:16:13,290 apa yang saya diajar dalam sekolah rendah mendaftar keluar. 1546 01:16:13,290 --> 01:16:19,010 Walaupun saya mencetak 10 perpuluhan meletakkan ia, sesungguhnya, adalah 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Tetapi anda tahu apa? 1548 01:16:19,840 --> 01:16:21,150 >> Mari kita mendapatkan sedikit tamak. 1549 01:16:21,150 --> 01:16:23,990 Katakan, seperti, menunjukkan kepada saya 55 mata selepas perpuluhan. 1550 01:16:23,990 --> 01:16:26,160 Mari kita benar-benar mengambil ini program keluar untuk spin. 1551 01:16:26,160 --> 01:16:31,170 Biar saya membentuk semula dengan make ketakpersisan, slash dot, ketakpersisan. 1552 01:16:31,170 --> 01:16:32,390 >> Dan di sini kita pergi. 1553 01:16:32,390 --> 01:16:34,420 zaman kanak-kanak anda adalah satu pembohongan. 1554 01:16:34,420 --> 01:16:48,410 Rupa-rupanya, 1 dibahagikan dengan 10 memang 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Apa yang sedang berlaku? 1556 01:16:49,740 --> 01:16:53,360 Nah, ternyata, jika anda jenis melihat cukup jauh di dalam asas 1557 01:16:53,360 --> 01:16:55,950 perwakilan ini nombor, ia sebenarnya 1558 01:16:55,950 --> 01:17:00,400 tidak betul-betul 1/10, atau 0.1 dan nombor terhingga sifar. 1559 01:17:00,400 --> 01:17:01,630 Sekarang, mengapa? 1560 01:17:01,630 --> 01:17:06,250 >> Well, walaupun ini adalah mudah nombor untuk kita manusia, 1 dibahagikan dengan 10, 1561 01:17:06,250 --> 01:17:10,910 ia masih salah satu daripada banyak tak terhingga nombor yang kita boleh berfikir sehingga. 1562 01:17:10,910 --> 01:17:14,490 Tetapi komputer hanya boleh mewakili terhingga banyak nombor demikian. 1563 01:17:14,490 --> 01:17:18,710 Dan sebagainya, berkesan, apa yang komputer menunjukkan kepada kita adalah yang paling hampir yang 1564 01:17:18,710 --> 01:17:22,940 anggaran bilangan kita mahu untuk mempercayai adalah 1/10, 1565 01:17:22,940 --> 01:17:27,760 atau benar-benar 0,10000 iklan infinitum. 1566 01:17:27,760 --> 01:17:30,425 >> Sebaliknya, walaupun, ini adalah sehampir ia boleh mendapatkan. 1567 01:17:30,425 --> 01:17:32,300 Dan, sememangnya, jika anda melihat di bawah hood, 1568 01:17:32,300 --> 01:17:37,050 kerana kami di sini dengan melihat 55 digit selepas perpuluhan, 1569 01:17:37,050 --> 01:17:39,990 kita sebenarnya melihat realiti itu. 1570 01:17:39,990 --> 01:17:42,610 Sekarang sebagai diketepikan, jika anda telah pernah melihat movie-- 1571 01:17:42,610 --> 01:17:45,780 sebahagian besar daripada anda mungkin have not tetapi Superman 3 beberapa tahun yang lalu, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor dasarnya dimanfaatkan ini realiti dalam syarikatnya untuk mencuri banyak 1573 01:17:49,500 --> 01:17:53,500 pecahan dan pecahan beberapa sen, kerana company-- seperti yang saya ingat, 1574 01:17:53,500 --> 01:17:57,210 ia telah while-- pada dasarnya membuang apa-apa yang tidak sesuai 1575 01:17:57,210 --> 01:17:58,790 ke dalam tanggapan sen. 1576 01:17:58,790 --> 01:18:01,480 >> Tetapi jika anda menambah semua ini kecil, kecil, nombor kecil lagi, 1577 01:18:01,480 --> 01:18:04,960 dan sekali lagi, dan sekali lagi, anda boleh, seperti dalam kesnya, membuat jumlah wang yang baik. 1578 01:18:04,960 --> 01:18:08,010 >> Itu idea yang sama telah ditipu oleh yang lebih baru-baru ini, tetapi masih sekarang lebih tua 1579 01:18:08,010 --> 01:18:10,500 filem, yang dipanggil Ruang Pejabat, mana lelaki di dalam filem itu, 1580 01:18:10,500 --> 01:18:13,501 melakukan perkara yang sama, kacau sehingga sepenuhnya, berakhir dengan terlalu banyak 1581 01:18:13,501 --> 01:18:14,666 wang dalam akaun bank mereka. 1582 01:18:14,666 --> 01:18:15,800 Ia adalah sangat mencurigakan. 1583 01:18:15,800 --> 01:18:19,290 Tetapi pada akhir hari, ketakpersisan adalah di sekeliling kita. 1584 01:18:19,290 --> 01:18:22,240 >> Dan itu juga, boleh menjadi tampak kes itu. 1585 01:18:22,240 --> 01:18:25,590 Ia ternyata bahawa Superman 3 dan Ruang Pejabat diketepikan, terdapat 1586 01:18:25,590 --> 01:18:28,460 boleh beberapa amat nyata kesan dunia 1587 01:18:28,460 --> 01:18:32,290 daripada realiti tidak tepat perwakilan data 1588 01:18:32,290 --> 01:18:34,770 bahawa walaupun kita manusia untuk hari ini tidak semestinya 1589 01:18:34,770 --> 01:18:38,230 memahami dan juga kita harus, atau ingat sekerap yang kita sepatutnya. 1590 01:18:38,230 --> 01:18:42,950 Dan, sememangnya, klip berikut adalah dari melihat beberapa dunia yang amat nyata 1591 01:18:42,950 --> 01:18:47,730 kesan daripada apa yang berlaku jika anda tidak menghargai ketakpersisan yang 1592 01:18:47,730 --> 01:18:50,065 boleh berlaku dalam jumlah perwakilan. 1593 01:18:50,065 --> 01:18:51,300 >> [VIDEO MAIN SEMULA] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Kami semua datang untuk menerima masalah sering mengecewakan 1595 01:18:55,620 --> 01:19:00,310 pergi dengan mereka, kelak pepijat, virus, dan glitches perisian, 1596 01:19:00,310 --> 01:19:03,130 untuk harga yang kecil untuk membayar untuk kemudahan. 1597 01:19:03,130 --> 01:19:07,800 Tetapi dalam teknologi tinggi dan kelajuan tinggi tentera dan program angkasa aplikasi, 1598 01:19:07,800 --> 01:19:12,800 masalah yang paling kecil boleh akan menjadi besar ke dalam bencana. 1599 01:19:12,800 --> 01:19:18,900 >> Pada 4 Jun, 1996, ahli-ahli sains yang disediakan untuk melancarkan tanpa pemandu Ariane 5 roket. 1600 01:19:18,900 --> 01:19:21,220 Ia membawa saintifik satelit direka 1601 01:19:21,220 --> 01:19:24,600 untuk mewujudkan dengan tepat bagaimana berinteraksi medan magnet bumi 1602 01:19:24,600 --> 01:19:27,410 dengan angin solar. 1603 01:19:27,410 --> 01:19:30,800 Roket ini dibina untuk Agensi Angkasa Eropah, 1604 01:19:30,800 --> 01:19:34,370 dan diangkat dari kemudahannya di pantai Guiana Perancis. 1605 01:19:34,370 --> 01:19:37,540 >> -at Kira-kira 37 saat ke dalam penerbangan, mereka mula-mula 1606 01:19:37,540 --> 01:19:39,270 perasan ada sesuatu yang tidak beres. 1607 01:19:39,270 --> 01:19:42,250 Muncung telah berputar di cara yang mereka benar-benar tidak sepatutnya. 1608 01:19:42,250 --> 01:19:46,580 Kira-kira 40 saat ke dalam penerbangan, jelas, kenderaan yang dalam kesusahan. 1609 01:19:46,580 --> 01:19:48,850 >> Dan itulah apabila mereka membuat keputusan untuk memusnahkan ia. 1610 01:19:48,850 --> 01:19:52,780 Pegawai keselamatan pelbagai, dengan keberanian besar, ditekan butang, 1611 01:19:52,780 --> 01:19:58,150 meletupkan roket, sebelum ia boleh menjadi bahaya kepada keselamatan awam. 1612 01:19:58,150 --> 01:20:01,060 >> -Ini Adalah sulung pelayaran Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 Dan kehancuran mengambil meletakkan kerana kecacatan 1614 01:20:03,960 --> 01:20:05,822 tertanam dalam perisian roket. 1615 01:20:05,822 --> 01:20:08,280 -The Masalah pada Ariane adalah bahawa ada sebilangan yang 1616 01:20:08,280 --> 01:20:10,600 diperlukan 64 bit untuk meluahkan. 1617 01:20:10,600 --> 01:20:13,590 Dan mereka mahu untuk menukar kepada beberapa 16-bit. 1618 01:20:13,590 --> 01:20:15,610 Mereka mengandaikan bahawa nombor tidak pernah akan 1619 01:20:15,610 --> 01:20:20,980 sangat besar, yang kebanyakan mereka digit dalam nombor 64-bit adalah sifar. 1620 01:20:20,980 --> 01:20:22,440 Mereka adalah salah. 1621 01:20:22,440 --> 01:20:25,060 >> -The Ketidakupayaan satu program perisian untuk menerima 1622 01:20:25,060 --> 01:20:29,510 jenis nombor yang dijana oleh lain merupakan punca kegagalan. 1623 01:20:29,510 --> 01:20:34,350 pembangunan perisian telah menjadi sangat mahal sebahagian daripada teknologi baru. 1624 01:20:34,350 --> 01:20:38,140 Roket Ariane telah sangat berjaya, jadi banyak perisian 1625 01:20:38,140 --> 01:20:41,550 dicipta untuk itu juga digunakan dalam Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Masalah asas adalah bahawa Ariane 5 adalah lebih cepat, mempercepatkan lebih cepat. 1627 01:20:47,940 --> 01:20:51,450 Dan perisian yang tidak mempunyai menyumbang untuk itu. 1628 01:20:51,450 --> 01:20:55,060 >> -The Kemusnahan roket merupakan satu malapetaka kewangan yang besar, 1629 01:20:55,060 --> 01:20:58,790 semua kerana kesilapan perisian minit. 1630 01:20:58,790 --> 01:21:01,210 Tetapi ini bukanlah yang pertama masa masalah penukaran data 1631 01:21:01,210 --> 01:21:04,820 membelenggu teknologi roket moden. 1632 01:21:04,820 --> 01:21:08,050 >> -Dalam 1991, dengan permulaan Perang Teluk pertama, 1633 01:21:08,050 --> 01:21:10,570 Patriot Missile mengalami jenis yang sama 1634 01:21:10,570 --> 01:21:12,800 masalah jumlah penukaran. 1635 01:21:12,800 --> 01:21:16,090 Dan hasilnya, 28 orang, 28 tentera Amerika, 1636 01:21:16,090 --> 01:21:19,080 terbunuh, dan kira-kira 100 yang lain cedera, 1637 01:21:19,080 --> 01:21:22,780 apabila Patriot, yang sepatutnya untuk melindungi daripada scuds masuk, 1638 01:21:22,780 --> 01:21:25,830 gagal untuk menembak peluru berpandu. 1639 01:21:25,830 --> 01:21:31,670 >> -Apabila Iraq menyerang Kuwait, dan Amerika dilancarkan Desert Storm pada awal tahun 1991, 1640 01:21:31,670 --> 01:21:35,780 bateri Patriot peluru berpandu telah dikerahkan untuk melindungi Arab Saudi dan Israel 1641 01:21:35,780 --> 01:21:39,230 daripada serangan peluru berpandu Scud Iraq. 1642 01:21:39,230 --> 01:21:43,810 The Patriot adalah sederhana US permukaan untuk sistem udara, yang dikeluarkan 1643 01:21:43,810 --> 01:21:45,770 oleh syarikat Raytheon itu. 1644 01:21:45,770 --> 01:21:52,340 >> -The Saiz pemintas Patriot sendiri adalah kira-kira kira-kira 20 kaki panjang. 1645 01:21:52,340 --> 01:21:55,230 Dan ia mempunyai berat kira-kira 2,000 pound. 1646 01:21:55,230 --> 01:21:59,320 Dan ia membawa kepala peledak kira-kira, Saya fikir ia adalah kira-kira 150 pound. 1647 01:21:59,320 --> 01:22:03,930 Dan kepala peledak itu sendiri adalah letupan yang tinggi, yang 1648 01:22:03,930 --> 01:22:07,330 mempunyai serpihan di sekitarnya. 1649 01:22:07,330 --> 01:22:11,680 Sarung kepala peledak adalah direka untuk bertindak seperti peluru. 1650 01:22:11,680 --> 01:22:14,110 >> -The Peluru berpandu dibawa empat setiap bekas, 1651 01:22:14,110 --> 01:22:17,130 dan diangkut oleh sebuah treler semi. 1652 01:22:17,130 --> 01:22:24,930 >> -The Sistem Patriot anti-peluru berpandu kembali sekurang-kurangnya 20 tahun. 1653 01:22:24,930 --> 01:22:28,420 Ia direka bentuk asalnya sebagai pertahanan peluru berpandu udara 1654 01:22:28,420 --> 01:22:30,720 untuk menembak jatuh kapal terbang musuh. 1655 01:22:30,720 --> 01:22:34,500 Dalam Perang Teluk pertama, apabila perang yang datang bersama-sama, 1656 01:22:34,500 --> 01:22:39,745 Tentera mahu menggunakannya untuk menembak jatuh scuds, bukan kapal terbang. 1657 01:22:39,745 --> 01:22:43,620 >> Tentera Udara Iraq tidak begitu banyak masalah. 1658 01:22:43,620 --> 01:22:46,670 Tetapi Tentera bimbang mengenai scuds. 1659 01:22:46,670 --> 01:22:50,170 Dan kerana itu mereka cuba meningkatkan Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Musuh peluru berpandu bergerak pada mach 5 1661 01:22:52,800 --> 01:22:55,830 telah pergi untuk mencabar cukup. 1662 01:22:55,830 --> 01:22:58,490 Tetapi apabila Patriot dikejarkan ke dalam perkhidmatan, 1663 01:22:58,490 --> 01:23:02,860 Tentera tidak sedar yang pengubahsuaian Iraq yang dibuat 1664 01:23:02,860 --> 01:23:05,930 scuds mereka hampir mustahil untuk memukul. 1665 01:23:05,930 --> 01:23:10,740 >> -Apa Yang berlaku adalah scuds yang telah datang tidak stabil. 1666 01:23:10,740 --> 01:23:11,692 Mereka terumbang-ambing. 1667 01:23:11,692 --> 01:23:14,910 Sebab untuk ini adalah Iraq, untuk 1668 01:23:14,910 --> 01:23:18,280 untuk mendapatkan 600 kilometer daripada 300 kilometer 1669 01:23:18,280 --> 01:23:21,700 peluru berpandu jarak, mengambil berat daripada kepala peledak depan. 1670 01:23:21,700 --> 01:23:23,390 Mereka membuat kepala peledak yang lebih ringan. 1671 01:23:23,390 --> 01:23:27,330 >> Jadi sekarang Patriot adalah cuba untuk datang dengan Scud. 1672 01:23:27,330 --> 01:23:30,230 Dan sebahagian besar dari masa itu, Sebahagian besar masa, 1673 01:23:30,230 --> 01:23:32,940 ia hanya akan terbang oleh Scud. 1674 01:23:32,940 --> 01:23:37,260 Apabila pengendali sistem Patriot menyedari Patriot tersasar, 1675 01:23:37,260 --> 01:23:41,690 mereka meletupkan kepala peledak Patriot untuk mengelakkan mangsa mungkin jika ia 1676 01:23:41,690 --> 01:23:44,570 telah dibiarkan jatuh ke tanah. 1677 01:23:44,570 --> 01:23:48,790 >> -Itu Adalah apa yang kebanyakan orang melihat, orang-orang bola api besar di langit, 1678 01:23:48,790 --> 01:23:54,550 dan disalah anggap sebagai memintas kepala peledak Scud. 1679 01:23:54,550 --> 01:23:56,630 >> -Although Pada waktu malam langit, Patriots muncul 1680 01:23:56,630 --> 01:24:00,370 untuk menjadi berjaya memusnahkan Scuds, di Dhahran, 1681 01:24:00,370 --> 01:24:03,360 mungkin ada kesilapan yang tidak mengenai prestasinya. 1682 01:24:03,360 --> 01:24:07,970 Di sana, sistem radar Patriot trek kehilangan yang Scud masuk, 1683 01:24:07,970 --> 01:24:10,721 dan tidak pernah dilancarkan berikutan kepada kecacatan perisian. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Ia adalah Israel yang pertama kali ditemui bahawa sistem lagi yang berada di atas, 1686 01:24:18,940 --> 01:24:22,690 yang lebih besar perbezaan masa yang menjadi, kerana jam tertanam 1687 01:24:22,690 --> 01:24:24,810 dalam komputer sistem. 1688 01:24:24,810 --> 01:24:28,210 >> -Kira-Kira dua minggu sebelum tragedi di Dhahran, 1689 01:24:28,210 --> 01:24:30,770 Israel dilaporkan Jabatan Pertahanan 1690 01:24:30,770 --> 01:24:32,590 bahawa sistem telah kehilangan masa. 1691 01:24:32,590 --> 01:24:35,360 Selepas kira-kira lapan jam atau berjalan, mereka menyedari bahawa sistem 1692 01:24:35,360 --> 01:24:37,720 telah menjadi nyata kurang tepat. 1693 01:24:37,720 --> 01:24:41,900 Jabatan Pertahanan bertindak balas dengan memberitahu semua bateri Patriot 1694 01:24:41,900 --> 01:24:44,950 untuk tidak meninggalkan sistem untuk jangka masa yang panjang. 1695 01:24:44,950 --> 01:24:49,160 Mereka tidak pernah berkata apa masa yang lama was-- lapan jam, 10 jam, 1000 jam. 1696 01:24:49,160 --> 01:24:51,360 Tiada siapa yang tahu. 1697 01:24:51,360 --> 01:24:53,380 >> -The Bateri Patriot ditempatkan di berek 1698 01:24:53,380 --> 01:24:58,350 di Dhahran dan dalaman cacat yang jam telah di lebih 100 jam 1699 01:24:58,350 --> 01:25:01,670 pada malam 25 Feb. 1700 01:25:01,670 --> 01:25:05,917 >> -Ia Dikesan semasa ke ketepatan yang kira-kira satu per sepuluh daripada satu saat. 1701 01:25:05,917 --> 01:25:08,000 Sekarang, satu per sepuluh daripada satu saat adalah nombor menarik, 1702 01:25:08,000 --> 01:25:11,920 kerana ia tidak boleh dinyatakan dalam binari betul-betul, yang 1703 01:25:11,920 --> 01:25:16,820 bermakna ia tidak boleh dinyatakan dengan tepat di mana-mana komputer digital moden. 1704 01:25:16,820 --> 01:25:18,540 Adalah sukar untuk mempercayai. 1705 01:25:18,540 --> 01:25:21,210 >> Tetapi menggunakan ini sebagai contoh. 1706 01:25:21,210 --> 01:25:23,540 Mari kita ketiga nombor satu. 1707 01:25:23,540 --> 01:25:27,350 Satu pertiga tidak boleh dinyatakan dalam perpuluhan dengan tepat. 1708 01:25:27,350 --> 01:25:32,080 Satu pertiga adalah 0,333 berlaku selama infiniti. 1709 01:25:32,080 --> 01:25:36,480 >> Tidak ada cara untuk melakukan itu dengan ketepatan mutlak dalam perpuluhan. 1710 01:25:36,480 --> 01:25:39,560 Itulah jenis masalah yang berlaku di Patriot. 1711 01:25:39,560 --> 01:25:44,100 Sistem ini lebih panjang itu berlari, yang lebih teruk ralat masa yang menjadi. 1712 01:25:44,100 --> 01:25:48,890 >> -Selepas 100 jam operasi, kesilapan dalam masa hanya kira-kira satu pertiga 1713 01:25:48,890 --> 01:25:50,600 saat. 1714 01:25:50,600 --> 01:25:54,210 Tetapi dari segi menyasarkan peluru berpandu bergerak pada mach 5, 1715 01:25:54,210 --> 01:25:58,710 ia menyebabkan pengesanan yang kesilapan lebih 600 meter. 1716 01:25:58,710 --> 01:26:02,120 Ia akan menjadi satu kesilapan yang teramat untuk tentera kepada apa yang 1717 01:26:02,120 --> 01:26:08,940 berlaku ialah pelancaran Scud adalah dikesan oleh satelit Amaran awal 1718 01:26:08,940 --> 01:26:12,860 dan mereka tahu bahawa Scud adalah datang dari arah umum mereka. 1719 01:26:12,860 --> 01:26:15,320 Mereka tidak tahu di mana ia datang. 1720 01:26:15,320 --> 01:26:18,250 >> -Ia Kini terpulang kepada radar komponen sistem Patriot 1721 01:26:18,250 --> 01:26:23,190 mempertahankan Dhahran untuk mencari dan menyimpan mengesan peluru berpandu musuh yang datang. 1722 01:26:23,190 --> 01:26:24,609 >> radar -The sangat pintar. 1723 01:26:24,609 --> 01:26:26,650 Ia sebenarnya akan mengesan kedudukan Scud, 1724 01:26:26,650 --> 01:26:30,350 dan kemudian meramalkan di mana ia mungkin akan menjadi masa yang akan datang radar yang dihantar 1725 01:26:30,350 --> 01:26:31,420 a nadi keluar. 1726 01:26:31,420 --> 01:26:33,110 Yang dipanggil pintu pelbagai. 1727 01:26:33,110 --> 01:26:37,660 >> -Kemudian, Sebaik sahaja Patriot memutuskan masa yang cukup mempunyai 1728 01:26:37,660 --> 01:26:42,450 diluluskan untuk kembali dan memeriksa seterusnya lokasi bagi objek yang dikesan ini, 1729 01:26:42,450 --> 01:26:43,600 ia kembali. 1730 01:26:43,600 --> 01:26:48,650 Oleh itu, apabila ia kembali kepada salah tempat, ia kemudian melihat objek tidak. 1731 01:26:48,650 --> 01:26:52,160 Dan ia memutuskan bahawa tidak ada objek, ia adalah pengesanan palsu, 1732 01:26:52,160 --> 01:26:53,930 dan jatuh trek. 1733 01:26:53,930 --> 01:26:57,030 >> -The Scud yang diterima dan hilang dari skrin radar. 1734 01:26:57,030 --> 01:27:00,260 Dan saat kemudian, ia menyelar ke markas. 1735 01:27:00,260 --> 01:27:06,150 Scud membunuh 28, dan adalah yang terakhir satu dipecat semasa Perang Teluk pertama. 1736 01:27:06,150 --> 01:27:11,960 >> Malang sekali, perisian terkini tiba di Dhahran pada hari berikutnya. 1737 01:27:11,960 --> 01:27:14,930 Perisian kecacatan mempunyai menjadi tetap, tutup 1738 01:27:14,930 --> 01:27:19,806 salah satu bab dalam bermasalah sejarah peluru berpandu Patriot. 1739 01:27:19,806 --> 01:27:20,729 >> [VIDEO MAIN SEMULA] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. MALAN: Jadi ini adalah semua untuk mengatakan bahawa isu-isu ini limpahan 1741 01:27:23,520 --> 01:27:25,860 dan ketakpersisan adalah terlalu nyata. 1742 01:27:25,860 --> 01:27:26,920 Jadi, bagaimana kita di sini? 1743 01:27:26,920 --> 01:27:28,895 Kami bermula dengan hanya bercakap tentang printf. 1744 01:27:28,895 --> 01:27:31,270 Sekali lagi, fungsi ini, mencetak sesuatu untuk skrin, 1745 01:27:31,270 --> 01:27:33,450 dan kami diperkenalkan selepas itu beberapa fungsi lain 1746 01:27:33,450 --> 01:27:34,945 dari perpustakaan dipanggil CS50. 1747 01:27:34,945 --> 01:27:36,910 Dan kita akan terus melihat ini dalam masa terdekat. 1748 01:27:36,910 --> 01:27:40,760 Dan kita, khususnya, digunakan mendapatkan tali, dan mendapatkan int, dan kini juga mendapat apungan, 1749 01:27:40,760 --> 01:27:44,410 dan yang lain lagi masih akan kita temui dan menggunakan diri kita sendiri tidak lama lagi. 1750 01:27:44,410 --> 01:27:47,220 >> Tetapi kadang-kadang, ada kita telah melihat keperluan 1751 01:27:47,220 --> 01:27:50,520 untuk menyimpan apa fungsi-fungsi tangan kembali? 1752 01:27:50,520 --> 01:27:52,920 Mereka menyerahkan kita kembali rentetan, atau int, atau apungan. 1753 01:27:52,920 --> 01:27:56,070 Dan kadang-kadang kita perlu meletakkan bahawa tali, atau int, atau terapung, di suatu tempat. 1754 01:27:56,070 --> 01:28:00,100 >> Dan untuk menyimpan perkara-perkara, ingat hanya seperti di Awal, kami mempunyai pembolehubah. 1755 01:28:00,100 --> 01:28:03,260 Tetapi tidak seperti di Awal, dalam C kita mempunyai jenis yang sebenar 1756 01:28:03,260 --> 01:28:05,530 data variables-- jenis, lebih generally-- 1757 01:28:05,530 --> 01:28:08,640 di antara mereka, rentetan, int, yang terapung, dan ini orang lain masih. 1758 01:28:08,640 --> 01:28:12,321 >> Dan supaya apabila kita mengisytiharkan pembolehubah dalam C, kita akan mempunyai untuk mengisytiharkan jenis data kami. 1759 01:28:12,321 --> 01:28:14,820 Ini bukanlah sesuatu yang kami akan perlu lakukan kemudian pada semester 1760 01:28:14,820 --> 01:28:16,810 seperti yang kita beralih ke bahasa lain. 1761 01:28:16,810 --> 01:28:19,610 Tetapi untuk sekarang, kita perlu kepada priori terlebih dahulu, 1762 01:28:19,610 --> 01:28:24,370 menjelaskan kepada komputer apa jenis pembolehubah kita mahu ia berikan kepada kami. 1763 01:28:24,370 --> 01:28:27,290 >> Sekarang, sementara itu, untuk mencetak orang-orang jenis jenis data, 1764 01:28:27,290 --> 01:28:29,570 kita perlu memberitahu printf apa yang diharapkan. 1765 01:28:29,570 --> 01:28:32,450 Dan kita melihat peratus kerana tali, dan peratus i untuk integer, 1766 01:28:32,450 --> 01:28:33,790 dan beberapa yang lain sudah. 1767 01:28:33,790 --> 01:28:37,237 Dan orang-orang yang hanya keperluan untuk persembahan visual 1768 01:28:37,237 --> 01:28:38,070 maklumat tersebut. 1769 01:28:38,070 --> 01:28:42,080 >> Dan masing-masing sebenarnya boleh parametrized atau mengagak dalam beberapa cara, 1770 01:28:42,080 --> 01:28:45,370 jika anda ingin melanjutkan kawalan jenis output yang anda dapat. 1771 01:28:45,370 --> 01:28:49,604 Dan, sebenarnya, ternyata bahawa bukan sahaja ada garis sendeng terbalik n untuk barisan baru. 1772 01:28:49,604 --> 01:28:52,520 Ada sesuatu yang lain dipanggil garis sendeng terbalik r untuk pembawa kembali, yang 1773 01:28:52,520 --> 01:28:54,360 adalah lebih mirip kepada mesin taip sekolah lama, 1774 01:28:54,360 --> 01:28:57,690 dan juga Windows digunakan selama bertahun-tahun. 1775 01:28:57,690 --> 01:28:59,690 >> Ada t garis sendeng terbalik untuk tab. 1776 01:28:59,690 --> 01:29:03,170 Rupa-rupanya, bahawa jika anda mahu petikan berganda dalam rentetan, 1777 01:29:03,170 --> 01:29:05,000 ingat bahawa kita telah menggunakan dua petikan berganda 1778 01:29:05,000 --> 01:29:07,900 quote di sebelah kiri dan kanan berakhir rentetan kami setakat ini. 1779 01:29:07,900 --> 01:29:09,420 Yang seolah-olah mengelirukan perkara. 1780 01:29:09,420 --> 01:29:12,503 >> Jika anda mahu meletakkan petikan berganda dalam tengah-tengah string-- dan, sememangnya, 1781 01:29:12,503 --> 01:29:13,670 ia mengelirukan untuk melihat. 1782 01:29:13,670 --> 01:29:17,120 Dan supaya anda perlu untuk melarikan diri, jadi untuk bercakap, petikan berganda dengan sesuatu 1783 01:29:17,120 --> 01:29:18,860 seperti, secara literal, garis sendeng terbalik petikan berganda. 1784 01:29:18,860 --> 01:29:20,230 Dan ada beberapa tempat lain masih. 1785 01:29:20,230 --> 01:29:24,540 Dan kita akan melihat lebih banyak dari orang-orang dalam penggunaan sebenar tidak lama lagi. 1786 01:29:24,540 --> 01:29:27,930 >> Jadi mari kita kini beralih daripada data, dan perwakilan, 1787 01:29:27,930 --> 01:29:30,820 dan pengendali aritmetik, semua yang memberikan kita beberapa bangunan 1788 01:29:30,820 --> 01:29:32,070 blok dengan mana untuk bermain. 1789 01:29:32,070 --> 01:29:34,481 Tetapi sekarang mari kita sebenarnya memberi kami seluruh perbendaharaan kata 1790 01:29:34,481 --> 01:29:36,230 bahawa kita sudah mempunyai minggu lepas dengan Scratch 1791 01:29:36,230 --> 01:29:39,350 dengan mengambil lihat beberapa lain konstruk dalam C-- tidak semua daripada mereka. 1792 01:29:39,350 --> 01:29:41,680 Tetapi idea-idea kita kira-kira untuk melihat benar-benar hanya 1793 01:29:41,680 --> 01:29:45,610 untuk menekankan terjemahan dari satu bahasa, Awal, yang lain, C. 1794 01:29:45,610 --> 01:29:48,470 >> Dan dari masa ke masa, kami akan mengambil lebih banyak alat untuk Kit kami, 1795 01:29:48,470 --> 01:29:49,820 boleh dikatakan, sintaksis. 1796 01:29:49,820 --> 01:29:54,190 Dan, sememangnya, anda akan melihat bahawa idea-idea kini agak biasa dari minggu lepas. 1797 01:29:54,190 --> 01:29:55,200 Jadi mari kita buat ini. 1798 01:29:55,200 --> 01:29:58,870 >> Mari kita pergi ke depan dan menyiapkan program yang benar-benar menggunakan beberapa ungkapan, 1799 01:29:58,870 --> 01:30:00,720 ungkapan Boolean. 1800 01:30:00,720 --> 01:30:02,810 Biar saya pergi ke hadapan di sini dan membuat fail baru. 1801 01:30:02,810 --> 01:30:06,090 Saya akan panggil condition.c ini. 1802 01:30:06,090 --> 01:30:09,350 >> Biar saya pergi ke hadapan dan termasuk perpustakaan CS50. 1803 01:30:09,350 --> 01:30:12,640 Dan biarlah saya pergi ke hadapan dan termasuk standard io.h untuk fungsi kami, 1804 01:30:12,640 --> 01:30:14,690 dan printf, dan banyak lagi masing-masing. 1805 01:30:14,690 --> 01:30:18,900 Biar saya memberi diri saya sendiri bahawa boilerplate daripada int tidak sah utama, yang penjelasan kami akan 1806 01:30:18,900 --> 01:30:20,360 kembali pada masa akan datang. 1807 01:30:20,360 --> 01:30:23,820 >> Sekarang, saya akan pergi ke hadapan dan memberi diri saya int melalui get int. 1808 01:30:23,820 --> 01:30:25,970 Maka biarlah saya pergi ke hadapan dan melakukan ini. 1809 01:30:25,970 --> 01:30:30,150 Saya ingin mengatakan jika saya adalah less-- mari membezakan antara positif, negatif, 1810 01:30:30,150 --> 01:30:31,260 atau nilai sifar. 1811 01:30:31,260 --> 01:30:36,630 >> Jadi, jika i adalah kurang daripada sifar, biarlah saya hanya mempunyai program ini hanya berkata, 1812 01:30:36,630 --> 01:30:42,370 negatif, garis sendeng terbalik n, lain jika saya adalah lebih besar daripada sifar. 1813 01:30:42,370 --> 01:30:47,030 Kini saya, sudah tentu, akan berkata printf positif, garis sendeng terbalik n. 1814 01:30:47,030 --> 01:30:50,690 Dan kemudian lagi jika- saya boleh melakukan ini. 1815 01:30:50,690 --> 01:30:53,410 >> Saya boleh lakukan jika i sama dengan 0. 1816 01:30:53,410 --> 01:30:55,840 Tetapi saya akan membuat sekurang kurangnya satu kesilapan sudah. 1817 01:30:55,840 --> 01:30:59,480 Ingat bahawa tanda 'sama tidak sama, kerana kita manusia tahu. 1818 01:30:59,480 --> 01:31:01,010 >> Tetapi ia adalah pengendali tugasan. 1819 01:31:01,010 --> 01:31:05,640 Dan kita tidak mahu mengambil 0 pada betul dan memasukkannya ke dalam i di sebelah kiri. 1820 01:31:05,640 --> 01:31:11,810 Jadi untuk mengelakkan kekeliruan ini, atau mungkin penyalahgunaan tanda sama, 1821 01:31:11,810 --> 01:31:14,740 manusia telah memilih beberapa tahun yang lalu bahawa dalam banyak bahasa pengaturcaraan 1822 01:31:14,740 --> 01:31:18,000 apabila anda mahu untuk memeriksa untuk kesaksamaan antara kiri dan kanan, 1823 01:31:18,000 --> 01:31:19,635 anda sebenarnya menggunakan sama sama. 1824 01:31:19,635 --> 01:31:21,010 Jadi anda memukul tanda sama dua kali. 1825 01:31:21,010 --> 01:31:25,600 Apabila anda mahu untuk menetapkan dari kanan ke kiri, anda menggunakan tanda sama tunggal. 1826 01:31:25,600 --> 01:31:29,360 Oleh itu, kita boleh melakukan this-- lagi jika i sama sama dengan sifar. 1827 01:31:29,360 --> 01:31:31,710 >> Saya kemudian boleh pergi dan membuka pendakap kerinting saya, 1828 01:31:31,710 --> 01:31:36,087 dan berkata, printf 0, garis sendeng terbalik n, dilakukan. 1829 01:31:36,087 --> 01:31:38,170 Tetapi ingat bagaimana garpu di jalan raya boleh bekerja. 1830 01:31:38,170 --> 01:31:39,836 Dan, benar-benar, hanya berfikir tentang logik. 1831 01:31:39,836 --> 01:31:41,510 i adalah nombor. 1832 01:31:41,510 --> 01:31:43,320 Ia adalah integer, secara khusus. 1833 01:31:43,320 --> 01:31:48,600 Dan ini bermakna ia akan menjadi kurang daripada 0, atau lebih besar daripada 0, atau 0. 1834 01:31:48,600 --> 01:31:51,600 Jadi ada jenis ini kes lalai tersirat. 1835 01:31:51,600 --> 01:31:54,920 >> Dan supaya kita boleh, sama seperti Awal, mengetepikan lagi jika, 1836 01:31:54,920 --> 01:31:55,747 dan hanya berkata lagi. 1837 01:31:55,747 --> 01:31:57,830 Secara logiknya, jika anda programmer tahu ada sahaja 1838 01:31:57,830 --> 01:32:01,635 tiga baldi ke dalam mana senario boleh fall-- pertama, 1839 01:32:01,635 --> 01:32:03,510 kedua, atau ketiga dalam ini case-- tidak 1840 01:32:03,510 --> 01:32:07,100 mengganggu menambah ketepatan tambahan dan logik tambahan di sana. 1841 01:32:07,100 --> 01:32:09,690 Hanya pergi ke hadapan dengan kes piawai di sini daripada yang lain. 1842 01:32:09,690 --> 01:32:11,950 >> Sekarang, mari kita pergi ke hadapan selepas menyimpan ini, membuat 1843 01:32:11,950 --> 01:32:15,760 syarat dot mengurangkan syarat-syarat-- tidak antara muka pengguna yang hebat, 1844 01:32:15,760 --> 01:32:18,914 kerana saya tidak mendorong pengguna, seperti yang saya nyatakan sebelum ini. 1845 01:32:18,914 --> 01:32:19,580 Tetapi itulah denda. 1846 01:32:19,580 --> 01:32:20,454 Kami akan memastikan ia mudah. 1847 01:32:20,454 --> 01:32:21,890 Mari kita cuba nombor 42. 1848 01:32:21,890 --> 01:32:23,240 Dan itu positif. 1849 01:32:23,240 --> 01:32:26,120 Mari kita cuba bilangan negatif 42, negatif. 1850 01:32:26,120 --> 01:32:28,244 >> Mari kita cuba nilai 0. 1851 01:32:28,244 --> 01:32:29,160 Dan, sememangnya, ia berfungsi. 1852 01:32:29,160 --> 01:32:33,900 Sekarang, anda akan dapat melihat dengan masalah sebelum lama, perkara ujian tiga kali, 1853 01:32:33,900 --> 01:32:34,980 mungkin tidak mencukupi. 1854 01:32:34,980 --> 01:32:37,438 Anda mungkin mahu menguji beberapa angka yang lebih besar, beberapa yang lebih kecil 1855 01:32:37,438 --> 01:32:40,520 nombor, beberapa kes sudut, kerana kami akan datang untuk menggambarkan mereka. 1856 01:32:40,520 --> 01:32:42,500 >> Tetapi buat masa ini, ini adalah satu program agak mudah. 1857 01:32:42,500 --> 01:32:45,160 Dan saya cukup pasti, secara logik, bahawa ia jatuh ke dalam tiga kes. 1858 01:32:45,160 --> 01:32:49,360 Dan, sememangnya, walaupun kita hanya memberi tumpuan kepada kelemahan yang berpotensi 1859 01:32:49,360 --> 01:32:53,480 daripada ketakpersisan dan limpahan, dalam realiti di mana banyak masalah CS50, 1860 01:32:53,480 --> 01:32:56,000 kita tidak akan bimbang kira-kira, sepanjang masa, 1861 01:32:56,000 --> 01:32:59,050 isu-isu limpahan dan ketakpersisan, kerana, sebenarnya, dalam C, 1862 01:32:59,050 --> 01:33:01,889 ia sebenarnya tidak semua yang mudah untuk mengelakkan perkara-perkara. 1863 01:33:01,889 --> 01:33:04,180 Jika anda ingin mengira sehingga lebih besar, dan lebih besar, dan lebih besar, 1864 01:33:04,180 --> 01:33:07,510 ternyata ada teknik anda boleh digunakan, selalunya melibatkan perkara yang dipanggil 1865 01:33:07,510 --> 01:33:11,240 perpustakaan, koleksi kod, yang orang lain menulis bahawa anda boleh menggunakan, 1866 01:33:11,240 --> 01:33:13,910 dan bahasa lain seperti Java dan lain-lain, sebenarnya 1867 01:33:13,910 --> 01:33:15,800 membuat ia lebih mudah untuk mengira yang lebih tinggi. 1868 01:33:15,800 --> 01:33:19,810 Jadi ia adalah sebahagian daripada bahaya ini fungsi bahasa yang anda gunakan. 1869 01:33:19,810 --> 01:33:22,710 Dan pada minggu-minggu akan datang, kami akan melihat betapa bahayanya C benar-benar 1870 01:33:22,710 --> 01:33:24,950 boleh jika anda tidak menggunakannya dengan betul. 1871 01:33:24,950 --> 01:33:27,610 Tetapi dari sana, dan dengan Python, dan JavaScript, akan 1872 01:33:27,610 --> 01:33:32,620 kita lapisan pada beberapa perlindungan tambahan, dan menjalankan lebih sedikit daripada risiko tersebut. 1873 01:33:32,620 --> 01:33:35,820 >> Jadi mari kita membuat lebih sedikit logik yang menarik dalam program kami. 1874 01:33:35,820 --> 01:33:39,110 Jadi biarlah saya pergi ke hadapan dan mencipta program yang dikenali sebagai Logical 1875 01:33:39,110 --> 01:33:43,804 hanya jadi saya boleh bermain dengan beberapa logik sebenar, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Saya hanya akan copy dan paste beberapa kod dari awal supaya saya kembali 1877 01:33:46,870 --> 01:33:49,950 ke titik permulaan ini bagus. 1878 01:33:49,950 --> 01:33:53,980 >> Biar saya kali ini melakukan C. char Saya akan memberikan nama C 1879 01:33:53,980 --> 01:33:58,510 hanya kerana ia adalah konvensional, mendapatkan watak dari pengguna. 1880 01:33:58,510 --> 01:34:00,730 Dan mari kita berpura-pura seperti Saya melaksanakan sebahagian 1881 01:34:00,730 --> 01:34:04,130 itu program Rm, keluarkan program sebelum yang mendorong pengguna 1882 01:34:04,130 --> 01:34:05,400 untuk membuang fail. 1883 01:34:05,400 --> 01:34:06,750 Bagaimana kita boleh melakukan ini? 1884 01:34:06,750 --> 01:34:11,090 >> Saya ingin mengatakan, jika C sama sama, quote unquote, 1885 01:34:11,090 --> 01:34:16,304 y, maka saya akan menganggap yang pengguna telah memilih ya. 1886 01:34:16,304 --> 01:34:17,470 Saya hanya akan mencetak ya. 1887 01:34:17,470 --> 01:34:19,440 Jika ia sebenarnya menulis program penyingkiran, 1888 01:34:19,440 --> 01:34:21,420 kita boleh mengeluarkan fail yang dengan lebih baris kod. 1889 01:34:21,420 --> 01:34:22,461 Tetapi kita akan memastikan ia mudah. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Lain jika c sama sama n-- dan kini di sini, saya akan berkata, 1892 01:34:31,250 --> 01:34:32,980 pengguna perlu bermakna tidak. 1893 01:34:32,980 --> 01:34:34,360 Dan kemudian yang lain, anda tahu apa? 1894 01:34:34,360 --> 01:34:36,200 Saya tidak tahu apa lagi yang pengguna akan menaip. 1895 01:34:36,200 --> 01:34:38,533 Jadi saya hanya akan mengatakan bahawa bahawa adalah satu kesilapan, apa sahaja 1896 01:34:38,533 --> 01:34:40,070 dia sebenarnya ditaip. 1897 01:34:40,070 --> 01:34:41,180 >> Jadi apa yang berlaku di sini? 1898 01:34:41,180 --> 01:34:44,530 Terdapat perbezaan asas berbanding apa yang saya lakukan pada masa lalu. 1899 01:34:44,530 --> 01:34:49,300 tanda petik, petik, double sebut harga, dan, lagi, petikan tunggal, 1900 01:34:49,300 --> 01:34:50,170 petikan tunggal. 1901 01:34:50,170 --> 01:34:52,860 Ternyata dalam C, bahawa apabila anda mahu menulis rentetan, 1902 01:34:52,860 --> 01:34:56,680 anda menggunakan tanda petik, sebagaimana kami telah telah menggunakan semua kali ini dengan printf. 1903 01:34:56,680 --> 01:35:02,030 >> Tetapi jika anda mahu berurusan dengan hanya watak tunggal, char yang dipanggil, 1904 01:35:02,030 --> 01:35:03,780 maka anda benar-benar menggunakan petikan tunggal. 1905 01:35:03,780 --> 01:35:05,450 Orang-orang yang telah diprogramkan sebelum ini, anda mungkin tidak mempunyai 1906 01:35:05,450 --> 01:35:07,850 mempunyai bimbang tentang perkara ini kepujian dalam bahasa tertentu. 1907 01:35:07,850 --> 01:35:09,450 Dalam C, ia menjadi persoalan. 1908 01:35:09,450 --> 01:35:12,560 Dan apabila saya mendapat char dan saya mahu untuk membandingkan char yang menggunakan sama 1909 01:35:12,560 --> 01:35:18,350 sama dengan beberapa surat seperti y atau n, yang saya lakukan, sesungguhnya, perlu mempunyai petikan tunggal. 1910 01:35:18,350 --> 01:35:19,770 >> Sekarang, mari kita pergi ke hadapan dan melakukan ini. 1911 01:35:19,770 --> 01:35:26,180 Mari kita pergi ke hadapan dan jangan membuat dot logik mengurangkan logik. 1912 01:35:26,180 --> 01:35:27,305 Dan sekarang saya diminta. 1913 01:35:27,305 --> 01:35:30,638 Jadi, mungkin, pengalaman pengguna yang lebih baik sebenarnya akan memberitahu saya apa yang perlu dilakukan di sini. 1914 01:35:30,638 --> 01:35:33,030 Tetapi saya akan hanya membuta tuli mengatakan y bagi ya, OK, bagus. 1915 01:35:33,030 --> 01:35:35,780 >> Mari kita berjalan sekali lagi, n untuk tidak, bagus. 1916 01:35:35,780 --> 01:35:39,610 Katakan seperti orang-orang tertentu yang saya tahu, topi saya mengunci utama adalah pada semua terlalu kerap. 1917 01:35:39,610 --> 01:35:43,740 Jadi saya lakukan modal Y, masukkan, kesilapan. 1918 01:35:43,740 --> 01:35:46,130 OK, ia tidak betul-betul apa yang saya jangkakan. 1919 01:35:46,130 --> 01:35:48,170 Sesungguhnya, komputer melakukan literal apa 1920 01:35:48,170 --> 01:35:51,794 Saya diberitahu ia do-- memeriksa huruf kecil dan huruf kecil y n. 1921 01:35:51,794 --> 01:35:53,960 Ini tidak merasa seperti baik pengalaman pengguna, walaupun. 1922 01:35:53,960 --> 01:35:59,010 Biar saya meminta dan menerima sama ada kes yang lebih rendah atau huruf besar. 1923 01:35:59,010 --> 01:36:02,090 Jadi ternyata, anda mungkin mahu untuk mengatakan sesuatu seperti di Awal, 1924 01:36:02,090 --> 01:36:08,150 seperti literal atau C sama sama dengan ibu tunggal y dipetik. 1925 01:36:08,150 --> 01:36:11,400 Rupa-rupanya, C tidak mempunyai kata kunci literal ini atau. 1926 01:36:11,400 --> 01:36:12,880 >> Tetapi ia mempunyai dua bar menegak. 1927 01:36:12,880 --> 01:36:15,463 Anda perlu memegang Shift biasanya, jika anda menggunakan papan kekunci AS, 1928 01:36:15,463 --> 01:36:18,910 dan terkena palang menegak utama di atas kekunci kembali anda. 1929 01:36:18,910 --> 01:36:22,410 Tetapi bar menegak ini bar menegak bermakna atau. 1930 01:36:22,410 --> 01:36:26,220 >> Jika, sebaliknya, kita mahu katakan dan, seperti di Awal, 1931 01:36:26,220 --> 01:36:28,180 kita boleh melakukan Ampersand Ampersand. 1932 01:36:28,180 --> 01:36:31,330 Yang tidak masuk akal logik sini, kerana manusia tidak mungkin boleh 1933 01:36:31,330 --> 01:36:37,110 telah ditaip kedua-dua y dan huruf kecil y dan modal Y sebagai watak yang sama. 1934 01:36:37,110 --> 01:36:39,470 Jadi atau apa yang kita berniat di sini. 1935 01:36:39,470 --> 01:36:46,280 >> Jadi, jika saya melakukan ini dalam kedua-dua tempat, atau c sama dengan sekutu-sekutu modal N, kini menjalankan semula, 1936 01:36:46,280 --> 01:36:49,390 membuat logik, jalankan lagi logik. 1937 01:36:49,390 --> 01:36:51,200 Sekarang, saya boleh menaip y. 1938 01:36:51,200 --> 01:36:53,920 Dan saya boleh melakukannya sekali lagi dengan modal Y atau N. modal 1939 01:36:53,920 --> 01:36:56,630 Dan saya boleh menambah tambahan gabungan masih. 1940 01:36:56,630 --> 01:36:58,810 >> Jadi ini adalah satu logik program setakat yang sekarang 1941 01:36:58,810 --> 01:37:01,940 Saya memeriksa secara logik untuk nilai ini atau nilai ini. 1942 01:37:01,940 --> 01:37:06,420 Dan saya tidak perlu, semestinya, datang dengan dua IFS lebih lagi yang IFS. 1943 01:37:06,420 --> 01:37:09,960 Saya sebenarnya boleh menggabungkan beberapa logik yang berkaitan bersama-sama dengan cara ini. 1944 01:37:09,960 --> 01:37:11,950 Jadi ini akan menjadi lebih baik direka daripada sekadar 1945 01:37:11,950 --> 01:37:17,490 berkata, jika C sama dengan kes yang lebih rendah y, mencetak ya, lain jika c sama dengan modal Y, 1946 01:37:17,490 --> 01:37:20,074 mencetak ya, lain jika c sama lower-- dalam erti kata lain, 1947 01:37:20,074 --> 01:37:21,990 anda tidak perlu mempunyai lebih dan lebih banyak cawangan. 1948 01:37:21,990 --> 01:37:28,840 Anda boleh menggabungkan beberapa bersamaan cawangan secara logik, kerana dengan cara ini. 1949 01:37:28,840 --> 01:37:34,150 >> Jadi mari kita lihat pada hanya satu Kandungan terakhir, satu konstruk akhir, 1950 01:37:34,150 --> 01:37:34,847 bahawa C membolehkan. 1951 01:37:34,847 --> 01:37:36,930 Dan kita akan kembali dalam masa depan kepada orang lain masih. 1952 01:37:36,930 --> 01:37:41,400 Dan kemudian kita akan membuat kesimpulan dengan melihat kerana tidak ketepatan code-- 1953 01:37:41,400 --> 01:37:46,070 mendapat kod untuk work-- tetapi reka bentuk kod, dan menanam mereka benih awal. 1954 01:37:46,070 --> 01:37:51,337 >> Jadi biarlah saya pergi ke hadapan dan membuka fail baru di sini. 1955 01:37:51,337 --> 01:37:51,920 Awak tahu tak? 1956 01:37:51,920 --> 01:37:54,450 Saya akan melaksanakan semula bahawa program sama, 1957 01:37:54,450 --> 01:37:55,940 tetapi menggunakan konstruk yang berbeza. 1958 01:37:55,940 --> 01:38:00,110 >> Jadi biarlah saya cepat memberikan diri saya akses untuk memasukkan CS50.h 1959 01:38:00,110 --> 01:38:04,150 untuk perpustakaan CS50, Io.h standard untuk printf. 1960 01:38:04,150 --> 01:38:06,510 Berikan saya tidak sah utama int saya. 1961 01:38:06,510 --> 01:38:09,310 Dan kemudian di sini, mari saya pergi ke hadapan dan melakukan ini. 1962 01:38:09,310 --> 01:38:12,010 >> Char c mendapat mendapatkan char, sama seperti sebelum ini. 1963 01:38:12,010 --> 01:38:16,770 Dan saya akan menggunakan konstruk baru sekarang-- menukar, kepada apa yang watak? 1964 01:38:16,770 --> 01:38:19,820 Jadi suis jenis seperti beralih trek kereta api. 1965 01:38:19,820 --> 01:38:22,070 Atau, benar-benar, ia adalah jenis jika lain, jika lain jika, 1966 01:38:22,070 --> 01:38:23,980 tetapi ditulis agak berbeza. 1967 01:38:23,980 --> 01:38:25,490 >> Suis kelihatan seperti ini. 1968 01:38:25,490 --> 01:38:29,060 Anda mempunyai suis, dan kemudian apa watak atau nombor yang anda mahu untuk melihat, 1969 01:38:29,060 --> 01:38:32,000 kemudian beberapa pendakap kerinting suka dalam Awal, hanya mengatakan melakukan barangan ini. 1970 01:38:32,000 --> 01:38:33,480 Dan kemudian anda mempunyai kes yang berbeza. 1971 01:38:33,480 --> 01:38:34,830 >> Anda tidak menggunakan jika dan lain. 1972 01:38:34,830 --> 01:38:37,050 Anda benar-benar menggunakan kes perkataan. 1973 01:38:37,050 --> 01:38:38,790 Dan anda akan mengatakan sesuatu seperti ini. 1974 01:38:38,790 --> 01:38:43,820 >> Jadi, dalam hal suatu huruf kecil y, atau dalam hal harta modal Y, 1975 01:38:43,820 --> 01:38:47,350 teruskan dan mencetak ya. 1976 01:38:47,350 --> 01:38:49,020 Dan kemudian keluar daripada suis. 1977 01:38:49,020 --> 01:38:49,580 Itu sahaja. 1978 01:38:49,580 --> 01:38:50,880 Telah siap. 1979 01:38:50,880 --> 01:38:57,270 >> Yang lain jika, boleh dikatakan, huruf kecil n, atau modal N, 1980 01:38:57,270 --> 01:39:02,560 kemudian pergi ke hadapan dan cetak daripada tidak, dan kemudian pecah. 1981 01:39:02,560 --> 01:39:08,022 Else-- dan ini jenis adalah kes lalai indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 dan hanya untuk langkah yang baik, walaupun secara logik rehat ini tidak perlu 1983 01:39:10,980 --> 01:39:12,896 kerana kita berada di akhir suis anyway, 1984 01:39:12,896 --> 01:39:14,520 Saya kini melanggar suis. 1985 01:39:14,520 --> 01:39:16,280 Jadi ini kelihatan sedikit berbeza. 1986 01:39:16,280 --> 01:39:18,272 >> Tetapi, secara logiknya, ia sebenarnya setara. 1987 01:39:18,272 --> 01:39:19,980 Dan mengapa anda akan menggunakan berbanding dengan yang lain? 1988 01:39:19,980 --> 01:39:23,220 Kadang-kadang, hanya keutamaan peribadi, kadang-kadang estetika, 1989 01:39:23,220 --> 01:39:25,420 jika saya pandang pada ini sekarang, ada sesuatu 1990 01:39:25,420 --> 01:39:27,510 yang boleh dikatakan bagi yang kebolehbacaan kod ini. 1991 01:39:27,510 --> 01:39:30,690 Maksud saya, tidak pernah pedulikan fakta bahawa ini Kod baru kepada ramai di antara kita di dalam bilik. 1992 01:39:30,690 --> 01:39:33,515 >> Tetapi ia hanya jenis cantik. 1993 01:39:33,515 --> 01:39:37,760 Anda lihat huruf kecil y, modal Y, huruf kecil n, lalai modal N, 1994 01:39:37,760 --> 01:39:40,150 ia hanya jenis melompat keluar pada anda dengan cara yang 1995 01:39:40,150 --> 01:39:42,200 itu, boleh dikatakan, mungkin contoh sebelumnya 1996 01:39:42,200 --> 01:39:45,780 dengan IFS, dan bar menegak, dan lain yang IFS, mungkin tidak mempunyai. 1997 01:39:45,780 --> 01:39:51,600 Jadi ini adalah benar-benar satu perkara peribadi pilihan, benar-benar, atau pembacaan, 1998 01:39:51,600 --> 01:39:52,360 kod. 1999 01:39:52,360 --> 01:39:58,230 >> Tetapi dari segi fungsi, biarlah saya pergi ke hadapan dan membuat suis, slash dot 2000 01:39:58,230 --> 01:40:05,830 suis, dan kini menaip y huruf kecil, modal Y, n huruf kecil, modal N, 2001 01:40:05,830 --> 01:40:09,250 David, cuba semula kerana itulah tidak bersifat tunggal. 2002 01:40:09,250 --> 01:40:12,050 Mari kita buat x, kesilapan, seperti yang diharapkan. 2003 01:40:12,050 --> 01:40:15,640 Dan, logically-- dan ini adalah sesuatu Saya akan menggalakkan dalam general-- walaupun 2004 01:40:15,640 --> 01:40:17,790 walaupun kita hanya menggaru permukaan beberapa ciri-ciri ini. 2005 01:40:17,790 --> 01:40:20,560 >> Dan ia mungkin tidak jelas apabila anda diri duduk di papan kekunci, 2006 01:40:20,560 --> 01:40:21,370 bagaimana ini berfungsi? 2007 01:40:21,370 --> 01:40:22,240 Apa yang akan anda lakukan? 2008 01:40:22,240 --> 01:40:25,630 Perkara yang indah tentang mempunyai komputer riba, atau desktop, atau akses 2009 01:40:25,630 --> 01:40:29,290 ke komputer dengan pengkompil, dan dengan editor kod seperti ini, 2010 01:40:29,290 --> 01:40:32,990 adalah anda boleh hampir selalu menjawab soalan- soalan untuk diri sendiri hanya dengan mencuba. 2011 01:40:32,990 --> 01:40:36,570 >> Sebagai contoh, jika retorik Persoalannya adalah, 2012 01:40:36,570 --> 01:40:39,540 apa yang berlaku jika anda terlupa kenyataan rehat anda? 2013 01:40:39,540 --> 01:40:41,400 Yang sebenarnya adalah sangat biasa perkara yang perlu dilakukan, 2014 01:40:41,400 --> 01:40:43,540 kerana ia tidak kelihatan seperti anda benar-benar memerlukannya. 2015 01:40:43,540 --> 01:40:46,790 Mereka sebenarnya tidak melengkapkan anda berfikir seperti satu kurungan atau kerinting yang 2016 01:40:46,790 --> 01:40:47,714 pendakap tidak. 2017 01:40:47,714 --> 01:40:49,630 Mari kita pergi ke hadapan dan susun semula kod dan lihat. 2018 01:40:49,630 --> 01:40:53,690 Oleh itu, suis, suis slash dot. 2019 01:40:53,690 --> 01:40:56,435 Mari kita menaip dalam huruf kecil y, kes atas, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Jadi saya menaip y. 2022 01:41:00,700 --> 01:41:04,420 >> program itu berkata ya, tidak, kesilapan, seolah-olah ia telah berubah fikiran. 2023 01:41:04,420 --> 01:41:09,280 Tetapi ia jenis itu, kerana apa yang berlaku dengan suis adalah kes pertama yang 2024 01:41:09,280 --> 01:41:13,899 Perlawanan pada dasarnya bermakna, hey komputer, melaksanakan semua kod di bawahnya. 2025 01:41:13,899 --> 01:41:16,690 Dan jika anda tidak mengatakan rehat, atau tidak mengatakan rehat, atau tidak berkata rehat, 2026 01:41:16,690 --> 01:41:19,540 komputer akan meniup melalui semua mereka garis 2027 01:41:19,540 --> 01:41:22,779 dan melaksanakan mereka semua sehingga ia sampai ke yang pendakap kerinting. 2028 01:41:22,779 --> 01:41:24,320 Jadi brek adalah yang sebenarnya perlu. 2029 01:41:24,320 --> 01:41:27,120 Tetapi bisa dibesarkan di sini, apabila ragu-ragu, cuba sesuatu. 2030 01:41:27,120 --> 01:41:29,510 Mungkin menyelamatkan kod anda terlebih dahulu, atau menyimpannya dalam fail tambahan 2031 01:41:29,510 --> 01:41:32,930 jika anda benar-benar bimbang tentang main dan perlu pulih 2032 01:41:32,930 --> 01:41:34,430 kerja yang anda tahu bekerja. 2033 01:41:34,430 --> 01:41:35,410 >> Tetapi cuba sesuatu. 2034 01:41:35,410 --> 01:41:38,074 Dan janganlah kamu menjadi seperti takut, mungkin, apa komputer mungkin lakukan, 2035 01:41:38,074 --> 01:41:39,490 atau bahawa anda mungkin memecahkan sesuatu. 2036 01:41:39,490 --> 01:41:42,790 Anda sentiasa boleh kembali semula kepada versi beberapa lebih awal. 2037 01:41:42,790 --> 01:41:45,640 >> Jadi mari kita berakhir dengan melihat di reka bentuk kod. 2038 01:41:45,640 --> 01:41:49,020 Kami mempunyai keupayaan ini sekarang untuk menulis syarat, dan gelung menulis, 2039 01:41:49,020 --> 01:41:50,850 dan pembolehubah, dan fungsi panggilan. 2040 01:41:50,850 --> 01:41:54,590 Jadi, terus-terang, kami jenis kembali di mana kita minggu yang lalu dengan Awal, 2041 01:41:54,590 --> 01:42:00,120 walaupun dengan teks yang kurang menarik persekitaran daripada Scratch membolehkan. 2042 01:42:00,120 --> 01:42:03,990 >> Tetapi perhatikan berapa cepat kita telah diperolehi bahawa perbendaharaan kata, walaupun ia 2043 01:42:03,990 --> 01:42:07,570 akan mengambil sedikit masa untuk tenggelam dalam, supaya kita kini boleh menggunakan perbendaharaan kata ini 2044 01:42:07,570 --> 01:42:10,320 untuk menulis program lebih menarik. 2045 01:42:10,320 --> 01:42:12,940 Dan mari kita mengambil langkah bayi ke arah itu, seperti berikut. 2046 01:42:12,940 --> 01:42:14,890 Biar saya pergi ke hadapan dan membuat fail baru di sini. 2047 01:42:14,890 --> 01:42:17,750 >> Saya akan memanggil ini prototype.c, dan memperkenalkan 2048 01:42:17,750 --> 01:42:20,954 buat kali pertama, keupayaan untuk membuat fungsi anda sendiri. 2049 01:42:20,954 --> 01:42:22,870 Sebahagian daripada anda mungkin mempunyai melakukan ini dengan Awal, 2050 01:42:22,870 --> 01:42:25,430 di mana anda boleh membuat anda blok adat sendiri di Awal, 2051 01:42:25,430 --> 01:42:27,892 dan kemudian mengheret mereka ke dalam tempat mana sahaja yang anda mahu dalam C. 2052 01:42:27,892 --> 01:42:30,100 Dan dalam kebanyakan program bahasa, anda boleh melakukan perkara 2053 01:42:30,100 --> 01:42:33,580 bahawa- membuat fungsi anda sendiri, jika mereka belum wujud. 2054 01:42:33,580 --> 01:42:38,660 >> Jadi, sebagai contoh, mari saya pergi ke hadapan dan termasuk CS50.h, dan termasuk 2055 01:42:38,660 --> 01:42:43,110 standard io.h, int tidak sah utama. 2056 01:42:43,110 --> 01:42:46,020 Dan sekarang kita mempunyai pemegang tempat bersedia untuk pergi. 2057 01:42:46,020 --> 01:42:48,550 Saya menjaga perkara-perkara percetakan seperti nama orang hari ini. 2058 01:42:48,550 --> 01:42:51,910 Dan yang terasa like-- tidak akan lebih baik jika ada 2059 01:42:51,910 --> 01:42:53,936 adalah fungsi yang dipanggil nama cetak? 2060 01:42:53,936 --> 01:42:55,060 Saya tidak perlu menggunakan printf. 2061 01:42:55,060 --> 01:42:56,976 Saya tidak perlu ingat semua kod format. 2062 01:42:56,976 --> 01:43:00,050 Mengapa tidak saya, atau mengapa tidak seseorang di hadapan saya, 2063 01:43:00,050 --> 01:43:02,980 membuat cetak fungsi dipanggil nama, yang diberikan beberapa nama, 2064 01:43:02,980 --> 01:43:03,980 hanya mencetak ia keluar? 2065 01:43:03,980 --> 01:43:08,700 >> Dalam erti kata lain, jika saya katakan, hey, komputer, memberi saya rentetan 2066 01:43:08,700 --> 01:43:11,870 dengan meminta pengguna untuk itu, melalui fungsi mendapatkan tali CS50. 2067 01:43:11,870 --> 01:43:15,090 Hey, komputer, meletakkan tali yang di pembolehubah di sebelah kiri, 2068 01:43:15,090 --> 01:43:16,150 dan memanggilnya s. 2069 01:43:16,150 --> 01:43:22,150 Dan kemudian, hey komputer, teruskan dan mencetak nama orang itu, dilakukan. 2070 01:43:22,150 --> 01:43:26,240 >> Sekarang, ia akan lebih baik, kerana program ini, dinamakan, 2071 01:43:26,240 --> 01:43:29,170 memberitahu saya apa yang ia sepatutnya lakukan melalui nama-nama orang-orang fungsi ini. 2072 01:43:29,170 --> 01:43:32,930 Biar saya pergi dan membuat prototaip, Enter. 2073 01:43:32,930 --> 01:43:34,930 Dan, malangnya, ini tidak akan terbang. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, talian 7, watak 5, kesilapan, pengakuan tersirat 2075 01:43:39,430 --> 01:43:42,960 fungsi nama cetak adalah tidak sah di C99, C99 2076 01:43:42,960 --> 01:43:45,130 bermaksud versi C yang keluar pada tahun 1999. 2077 01:43:45,130 --> 01:43:45,730 Itu sahaja. 2078 01:43:45,730 --> 01:43:48,780 >> Jadi, saya tidak tahu apa yang semua ini bermakna lagi. 2079 01:43:48,780 --> 01:43:50,810 Tetapi saya menyedari kesilapan dalam merah. 2080 01:43:50,810 --> 01:43:51,770 Itu cukup jelas. 2081 01:43:51,770 --> 01:43:53,769 >> Dan nampaknya dengan watak hijau di sini, 2082 01:43:53,769 --> 01:43:57,520 isu ini adalah dengan nama cetak, terbuka paren s, paren rapat, koma bertitik. 2083 01:43:57,520 --> 01:44:01,800 Tetapi pengakuan tersirat fungsi, kami pernah secara ringkas sebelum ini. 2084 01:44:01,800 --> 01:44:04,880 Ini bermakna, hanya, yang dilafaz tidak tahu apa yang saya maksudkan. 2085 01:44:04,880 --> 01:44:09,000 >> Saya telah menggunakan perkataan perbendaharaan kata bahawa itu pernah melihat atau telah diajar sebelum ini. 2086 01:44:09,000 --> 01:44:11,950 Oleh itu, saya perlu mengajar apa fungsi ini bermakna. 2087 01:44:11,950 --> 01:44:13,590 Jadi, saya akan pergi ke hadapan dan melakukan itu. 2088 01:44:13,590 --> 01:44:17,970 >> Saya akan pergi ke hadapan dan melaksanakan fungsi saya sendiri dipanggil Cetak Nama. 2089 01:44:17,970 --> 01:44:24,720 Dan saya akan berkata, seperti yang berikut, ia melakukan ini, printf, hello, peratus 2090 01:44:24,720 --> 01:44:27,760 s, garis sendeng terbalik n, nama, koma bertitik. 2091 01:44:27,760 --> 01:44:29,250 Jadi apa yang saya lakukan? 2092 01:44:29,250 --> 01:44:31,325 >> Jadi ternyata, untuk melaksanakan fungsi anda sendiri, 2093 01:44:31,325 --> 01:44:33,845 kita jenis meminjam beberapa struktur yang sama dengan utama 2094 01:44:33,845 --> 01:44:35,720 bahawa kita baru sahaja menjadi diambil mudah, dan saya 2095 01:44:35,720 --> 01:44:37,730 tahu hanya menyalin dan menampal cukup banyak apa 2096 01:44:37,730 --> 01:44:39,170 Saya telah menulis pada masa lalu. 2097 01:44:39,170 --> 01:44:40,570 Tetapi perhatikan corak di sini. 2098 01:44:40,570 --> 01:44:43,750 Int, Main, tidak sah, kami akan mengusik selain tidak lama apa yang benar-benar bermakna. 2099 01:44:43,750 --> 01:44:46,160 >> Tetapi hari ini, hanya notis keselarian. 2100 01:44:46,160 --> 01:44:48,210 Tidak sah, nama cetak, nama tali, jadi tidak 2101 01:44:48,210 --> 01:44:50,310 kata kunci yang ungu, yang kita akan mula 2102 01:44:50,310 --> 01:44:54,067 memanggil jenis pulangan, nama fungsi, dan kemudian input. 2103 01:44:54,067 --> 01:44:56,400 Jadi, sebenarnya, kita boleh menyuling jenis ini seperti minggu lepas 2104 01:44:56,400 --> 01:44:59,030 sebagai, ini adalah nama atau algoritma kod yang kami berada 2105 01:44:59,030 --> 01:45:00,761 akan write-- yang algoritma asas 2106 01:45:00,761 --> 01:45:02,010 kod yang kami akan menulis. 2107 01:45:02,010 --> 01:45:03,180 >> Ini adalah input. 2108 01:45:03,180 --> 01:45:04,670 Ini adalah output. 2109 01:45:04,670 --> 01:45:08,730 Fungsi ini, nama cetak, adalah direka untuk mengambil rentetan dipanggil nama, 2110 01:45:08,730 --> 01:45:11,350 atau apa sahaja, sebagai input, dan kemudian tidak sah. 2111 01:45:11,350 --> 01:45:13,904 Ia tidak kembali apa-apa, seperti mendapatkan tali atau mendapatkan int tidak. 2112 01:45:13,904 --> 01:45:15,570 Jadi ia akan menyerahkan aku sesuatu kembali. 2113 01:45:15,570 --> 01:45:17,960 Ia hanya akan mempunyai kesan sampingan, jadi untuk bercakap, 2114 01:45:17,960 --> 01:45:19,570 mencetak nama seseorang. 2115 01:45:19,570 --> 01:45:22,260 Jadi notis, garis 7, saya boleh memanggil nama cetak. 2116 01:45:22,260 --> 01:45:25,920 Line 10, saya boleh menentukan atau melaksanakan nama cetak. 2117 01:45:25,920 --> 01:45:28,450 Tetapi, malangnya, itu tidak mencukupi. 2118 01:45:28,450 --> 01:45:31,230 >> Biar saya pergi ke hadapan dan susun semula ini selepas menyimpan. 2119 01:45:31,230 --> 01:45:33,910 Wah, sekarang, saya telah membuat ia lebih teruk lagi, ia akan kelihatan. 2120 01:45:33,910 --> 01:45:37,027 pengisytiharan supaya tersirat nama fungsi cetak adalah tidak sah. 2121 01:45:37,027 --> 01:45:38,360 Dan, sekali lagi, ada lagi kesilapan. 2122 01:45:38,360 --> 01:45:41,430 Tetapi seperti yang saya mengingatkan sebelum ini, walaupun jika anda mendapat terharu dengan, 2123 01:45:41,430 --> 01:45:44,850 atau sedikit sedih melihat begitu ramai kesilapan, memberi tumpuan hanya pada pertama 2124 01:45:44,850 --> 01:45:47,500 pada mulanya, kerana ia mungkin hanya mempunyai kesan yang melata. 2125 01:45:47,500 --> 01:45:51,970 Jadi C, atau dilafaz lebih khusus, masih tidak mengenali nama cetak. 2126 01:45:51,970 --> 01:45:54,580 >> Dan itu kerana dilafaz, dengan reka bentuk, adalah jenis keadaan sihat. 2127 01:45:54,580 --> 01:45:56,280 Ia hanya melakukan apa yang anda beritahu kepada lakukan. 2128 01:45:56,280 --> 01:46:00,950 Dan ia hanya berbuat demikian dalam perintah itu di mana anda memberitahu ia lakukan. 2129 01:46:00,950 --> 01:46:05,270 >> Jadi saya telah ditakrifkan utama pada baris empat, seperti yang kita telah lakukan dengan kerap. 2130 01:46:05,270 --> 01:46:07,980 Saya telah ditakrifkan nama print on line 10. 2131 01:46:07,980 --> 01:46:11,793 Tetapi saya cuba untuk menggunakan Nama cetak pada baris tujuh. 2132 01:46:11,793 --> 01:46:13,670 >> Ia terlalu awal, tidak wujud lagi. 2133 01:46:13,670 --> 01:46:19,150 Jadi saya boleh menjadi bijak, dan menjadi seperti, OK, jadi mari kita bermain bersama-sama, 2134 01:46:19,150 --> 01:46:23,680 dan memindahkan nama cetak sehingga di sini, dan menyusun semula. 2135 01:46:23,680 --> 01:46:24,550 Oh Tuhanku. 2136 01:46:24,550 --> 01:46:25,260 Ianya berhasil. 2137 01:46:25,260 --> 01:46:26,670 Ia adalah semudah itu. 2138 01:46:26,670 --> 01:46:28,120 >> Tetapi logik adalah tepat. 2139 01:46:28,120 --> 01:46:30,870 Anda perlu mengajar dilafaz apa yang ia adalah dengan menentukan fungsi pertama. 2140 01:46:30,870 --> 01:46:31,920 Kemudian anda boleh menggunakannya. 2141 01:46:31,920 --> 01:46:33,940 Tetapi, terus-terang, ini berasa seperti cerun licin. 2142 01:46:33,940 --> 01:46:35,773 >> Jadi setiap kali saya menjalankan ke dalam masalah, saya hanya 2143 01:46:35,773 --> 01:46:39,450 akan menyerlahkan dan tulis kod Saya menulis, potong dan tampal di sini. 2144 01:46:39,450 --> 01:46:41,370 Dan, sudah tentu, kita boleh jayakan beberapa senario 2145 01:46:41,370 --> 01:46:43,286 mana satu fungsi mungkin perlu memanggil lain. 2146 01:46:43,286 --> 01:46:46,030 Dan anda tidak boleh meletakkan setiap fungsi di atas setiap lain. 2147 01:46:46,030 --> 01:46:47,930 >> Jadi ternyata ada yang penyelesaian yang lebih baik. 2148 01:46:47,930 --> 01:46:50,100 Kami boleh membiarkan bahagian ini menjadi. 2149 01:46:50,100 --> 01:46:53,677 Dan, terus-terang, ia biasanya baik, dan mudah, dan reka bentuk yang baik 2150 01:46:53,677 --> 01:46:56,760 untuk meletakkan utama pertama, kerana, sekali lagi, utama seperti apabila bendera hijau diklik, 2151 01:46:56,760 --> 01:46:59,027 iaitu fungsi yang mendapat dilaksanakan secara lalai. 2152 01:46:59,027 --> 01:47:01,110 Jadi, anda juga mungkin meletakkan ia di bahagian atas fail 2153 01:47:01,110 --> 01:47:03,560 supaya apabila anda atau mana-mana manusia lain melihat fail 2154 01:47:03,560 --> 01:47:06,360 anda tahu apa yang berlaku hanya dengan membaca pertama utama. 2155 01:47:06,360 --> 01:47:15,360 Jadi ternyata, kita boleh memberitahu dilafaz proaktif, hey, dilafaz, pada baris empat, 2156 01:47:15,360 --> 01:47:17,940 Saya berjanji untuk melaksanakan fungsi dipanggil Cetak 2157 01:47:17,940 --> 01:47:22,600 Nama yang mengambil nama rentetan dipanggil sebagai input, dan pulangan apa-apa, tidak sah. 2158 01:47:22,600 --> 01:47:24,770 Dan saya akan mendapatkan sekitar untuk melaksanakannya kemudian. 2159 01:47:24,770 --> 01:47:25,680 >> Di sini datang Main. 2160 01:47:25,680 --> 01:47:29,130 Main sekarang line 9 boleh menggunakan Cetak Nama kerana dilafaz 2161 01:47:29,130 --> 01:47:32,600 adalah mempercayai bahawa, akhirnya, ia akan menghadapi definisi 2162 01:47:32,600 --> 01:47:34,880 pelaksanaan Cetak Nama. 2163 01:47:34,880 --> 01:47:37,390 Jadi selepas menyimpan fail saya, mari saya pergi ke hadapan dan membuat prototaip, 2164 01:47:37,390 --> 01:47:38,498 kelihatan baik kali ini. 2165 01:47:38,498 --> 01:47:43,470 Dot slash, prototaip, biarlah saya pergi ke depan dan menaip nama. 2166 01:47:43,470 --> 01:47:48,440 David, hello David, Zamila, hello Zamila, dan, sememangnya, kini ia berfungsi. 2167 01:47:48,440 --> 01:47:52,200 >> Jadi bahan di sini adalah bahawa kami telah membuat fungsi adat, seperti adat 2168 01:47:52,200 --> 01:47:54,219 blok Scratch kami memanggil ia. 2169 01:47:54,219 --> 01:47:57,010 Tetapi tidak seperti calar di mana anda boleh hanya membuat ia dan mula menggunakannya, 2170 01:47:57,010 --> 01:47:59,330 sekarang kita perlu menjadi sedikit lebih bengah, 2171 01:47:59,330 --> 01:48:03,410 dan sebenarnya melatih dilafaz untuk digunakan, atau untuk mengharapkan ia. 2172 01:48:03,410 --> 01:48:09,140 Sekarang, sebagai diketepikan, mengapa selama ini mempunyai kita telah hanya membuta tuli pada iman termasuk 2173 01:48:09,140 --> 01:48:12,170 CS50.h, dan termasuk standard io.h? 2174 01:48:12,170 --> 01:48:15,190 >> Nah, ternyata, antara beberapa perkara lain, 2175 01:48:15,190 --> 01:48:18,550 semua yang ada di dalam mereka yang dot h fail, yang berada fail. 2176 01:48:18,550 --> 01:48:20,460 Mereka header fail, jadi untuk bercakap. 2177 01:48:20,460 --> 01:48:23,270 Mereka masih ditulis dalam C. Tetapi mereka berlainan jenis fail. 2178 01:48:23,270 --> 01:48:28,690 >> Buat masa ini, anda cukup banyak boleh menganggap bahawa semua yang ada di dalam CS50.h 2179 01:48:28,690 --> 01:48:33,360 beberapa satu saham berharga seperti ini, tidak untuk fungsi dipanggil Cetak Nama, 2180 01:48:33,360 --> 01:48:36,840 tetapi untuk Dapatkan String, Dapatkan Float, dan beberapa yang lain. 2181 01:48:36,840 --> 01:48:41,510 Dan terdapat prototaip yang serupa, satu saham berharga, di dalam io.h standard 2182 01:48:41,510 --> 01:48:46,241 untuk printf, yang kini berada di sendiri fungsi Cetak Nama saya. 2183 01:48:46,241 --> 01:48:49,490 Jadi dalam erti kata lain, kali ini keseluruhannya kami telah sahaja secara membuta tuli menyalin dan menampal 2184 01:48:49,490 --> 01:48:51,780 termasuk ini, termasuk itu, apa yang berlaku? 2185 01:48:51,780 --> 01:48:55,310 Mereka adalah jenis hanya petunjuk untuk dilafaz apa fungsi 2186 01:48:55,310 --> 01:49:00,170 adalah, sesungguhnya, dilaksanakan, hanya tempat lain dalam fail yang berbeza 2187 01:49:00,170 --> 01:49:02,440 di bahagian lain pada sistem. 2188 01:49:02,440 --> 01:49:05,160 >> Oleh itu, kita telah melaksanakan nama cetak. 2189 01:49:05,160 --> 01:49:07,910 Ia mempunyai ini kesan sampingan mencetak sesuatu pada skrin. 2190 01:49:07,910 --> 01:49:10,170 Tetapi ia tidak benar-benar tangan saya sesuatu kembali. 2191 01:49:10,170 --> 01:49:12,200 Bagaimana kita pergi tentang melaksanakan program yang 2192 01:49:12,200 --> 01:49:14,510 tidak menyerahkan aku sesuatu kembali? 2193 01:49:14,510 --> 01:49:15,580 >> Nah, mari kita cuba ini. 2194 01:49:15,580 --> 01:49:21,360 Biar saya pergi ke hadapan dan melaksanakan yang return.c fail dipanggil 2195 01:49:21,360 --> 01:49:24,530 supaya kita dapat menunjukkan bagaimana sesuatu seperti Dapatkan String, atau Dapatkan Int, 2196 01:49:24,530 --> 01:49:27,340 sebenarnya kembali sesuatu kembali kepada pengguna. 2197 01:49:27,340 --> 01:49:29,840 Mari kita pergi ke hadapan dan menentukan sah utama int. 2198 01:49:29,840 --> 01:49:33,230 >> Dan, sekali lagi, pada masa akan datang, kita akan menjelaskan apa yang int dan tidak sah yang 2199 01:49:33,230 --> 01:49:34,090 sebenarnya lakukan. 2200 01:49:34,090 --> 01:49:35,840 Tetapi hari ini, kita akan mengambil kesempatan. 2201 01:49:35,840 --> 01:49:39,970 Saya akan pergi ke hadapan dan printf, untuk pengalaman pengguna yang baik, x ialah. 2202 01:49:39,970 --> 01:49:44,360 Dan kemudian saya akan menunggu pengguna untuk memberi saya x dengan mendapatkan int. 2203 01:49:44,360 --> 01:49:48,459 >> Dan kemudian saya akan pergi ke hadapan dan mencetak x ke dataran. 2204 01:49:48,459 --> 01:49:50,500 Oleh itu, apabila anda hanya mempunyai keyboard, orang biasa 2205 01:49:50,500 --> 01:49:52,600 menggunakan lobak merah kecil simbol pada papan kekunci 2206 01:49:52,600 --> 01:49:55,330 untuk mewakili kepada kuasa , atau eksponen. 2207 01:49:55,330 --> 01:49:58,960 Jadi x kuasa dua hadir i. 2208 01:49:58,960 --> 01:50:00,660 >> Dan sekarang saya akan melakukan ini. 2209 01:50:00,660 --> 01:50:03,940 Saya hanya boleh do-- apa yang x kuasa dua? x kuasa dua adalah x kali x. 2210 01:50:03,940 --> 01:50:06,690 >> Dan kita lakukan ini beberapa masa lalu sudah hari ini. 2211 01:50:06,690 --> 01:50:08,730 Ini tidak berasa seperti semua yang banyak kemajuan. 2212 01:50:08,730 --> 01:50:09,570 Awak tahu tak? 2213 01:50:09,570 --> 01:50:13,100 Mari kita memanfaatkan beberapa idea yang dari masa lalu abstraksi. 2214 01:50:13,100 --> 01:50:16,080 >> Bukankah lebih baik jika ada fungsi yang dipanggil 2215 01:50:16,080 --> 01:50:18,460 persegi yang tidak tepat itu? 2216 01:50:18,460 --> 01:50:20,640 Ia masih, pada akhir hari, adakah matematik yang sama. 2217 01:50:20,640 --> 01:50:22,410 Tetapi mari kita abstrak jauh idea pengambilan 2218 01:50:22,410 --> 01:50:25,280 satu nombor didarabkan dengan yang lain, dan hanya memberikan nama, 2219 01:50:25,280 --> 01:50:27,360 seperti mengambil ancang-nilai ini. 2220 01:50:27,360 --> 01:50:29,560 >> Dan, dalam erti kata lain, C, mari buat majlis 2221 01:50:29,560 --> 01:50:32,660 dipanggil persegi yang tidak tepat itu. 2222 01:50:32,660 --> 01:50:34,600 Ia akan dipanggil persegi. 2223 01:50:34,600 --> 01:50:35,790 Ia akan mengambil int. 2224 01:50:35,790 --> 01:50:37,820 Dan kami akan akan hanya memanggilnya n, secara lalai. 2225 01:50:37,820 --> 01:50:39,403 >> Tetapi kita boleh memanggilnya apa-apa yang kita mahu. 2226 01:50:39,403 --> 01:50:42,900 Dan apa yang ia akan lakukan, secara literal, tempat kembali 2227 01:50:42,900 --> 01:50:45,810 hasil kali n n. 2228 01:50:45,810 --> 01:50:48,980 Tetapi kerana ia adalah kembali sesuatu, yang 2229 01:50:48,980 --> 01:50:53,690 adalah kata kunci ungu kami telah tidak pernah dilihat sebelum ini, saya, pada baris 11, 2230 01:50:53,690 --> 01:50:55,410 tidak boleh hanya mengatakan tidak sah masa ini. 2231 01:50:55,410 --> 01:51:01,320 >> Tidak sah, dalam contoh kita hanya melihat dan bukan nama cetak, hanya bermaksud, 2232 01:51:01,320 --> 01:51:02,190 lakukan sesuatu. 2233 01:51:02,190 --> 01:51:04,170 Tetapi tidak menyerahkan aku sesuatu kembali. 2234 01:51:04,170 --> 01:51:06,790 Dalam kes ini, saya mahu untuk kembali n kali n, 2235 01:51:06,790 --> 01:51:08,460 atau apa sahaja iaitu, nombor itu. 2236 01:51:08,460 --> 01:51:12,460 >> Jadi saya tidak boleh berkata, hey, komputer, Saya kembali apa-apa, tidak sah. 2237 01:51:12,460 --> 01:51:16,166 Ia akan kembali, oleh alam semula jadi, int. 2238 01:51:16,166 --> 01:51:17,790 Dan supaya semua perkara yang berlaku di sini. 2239 01:51:17,790 --> 01:51:20,070 >> input untuk persegi akan menjadi int. 2240 01:51:20,070 --> 01:51:24,760 Dan supaya kita boleh menggunakannya, ia perlu mempunyai nama, N. Ia akan output 2241 01:51:24,760 --> 01:51:26,240 int yang tidak memerlukan nama. 2242 01:51:26,240 --> 01:51:29,590 Kita boleh serahkan kepada utama, atau sesiapa yang menggunakan saya ingat nilai ini jika kita 2243 01:51:29,590 --> 01:51:31,120 mahu dengan pembolehubah sendiri. 2244 01:51:31,120 --> 01:51:33,230 >> Dan, sekali lagi, hanya baru kata kunci di sini adalah Return. 2245 01:51:33,230 --> 01:51:34,480 Dan saya hanya melakukan beberapa matematik. 2246 01:51:34,480 --> 01:51:41,825 Jika saya benar-benar mahu menjadi yang tidak perlu, Saya boleh mengatakan produk int mendapat n kali n. 2247 01:51:41,825 --> 01:51:44,170 >> Dan kemudian saya boleh berkata, kembali produk. 2248 01:51:44,170 --> 01:51:47,360 Tetapi, sekali lagi, ke titik saya awal design-- ini baik hanya yang bukan 2249 01:51:47,360 --> 01:51:50,060 seperti, mengapa memperkenalkan nama, simbol, seperti produk, 2250 01:51:50,060 --> 01:51:51,570 hanya untuk segera mengembalikannya? 2251 01:51:51,570 --> 01:51:53,670 Ia lebih bersih sedikit, sedikit lebih ketat, jadi 2252 01:51:53,670 --> 01:51:59,380 untuk bercakap, hanya untuk mengatakan kali pulangan n n, menghilangkan garis ini sama sekali. 2253 01:51:59,380 --> 01:52:02,860 >> Dan ia hanya kurang kod untuk membaca, kurang peluang untuk kesilapan. 2254 01:52:02,860 --> 01:52:05,180 Dan mari kita lihat jika ini sebenarnya kini berfungsi. 2255 01:52:05,180 --> 01:52:09,380 Sekarang, saya akan pergi ke ke hadapan dan membuat kembali. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, perisytiharan tersirat fungsi. 2257 01:52:11,460 --> 01:52:14,080 Saya telah membuat kesilapan ini sebelum ini, tiada masalah besar. 2258 01:52:14,080 --> 01:52:18,950 Biar saya menaip, atau menyerlahkan dan menyalin, tepat sama fungsi prototaip, 2259 01:52:18,950 --> 01:52:21,342 atau tandatangan, fungsi di sini. 2260 01:52:21,342 --> 01:52:22,800 Atau saya boleh bergerak keseluruhan fungsi. 2261 01:52:22,800 --> 01:52:23,841 >> Tetapi itu sedikit malas. 2262 01:52:23,841 --> 01:52:24,870 Oleh itu, kita tidak akan berbuat demikian. 2263 01:52:24,870 --> 01:52:27,960 Sekarang, biarlah saya membuat kembali lagi, titik pulangan slash. 2264 01:52:27,960 --> 01:52:32,790 >> x 2. x kuasa dua ialah 4. x 3. x kuasa dua ialah 9. 2265 01:52:32,790 --> 01:52:35,300 Dan fungsi itu seolah-olah Masuk untuk bekerja. 2266 01:52:35,300 --> 01:52:36,550 Jadi apa perbezaan di sini? 2267 01:52:36,550 --> 01:52:42,520 Saya mempunyai fungsi yang dinamakan persegi, dalam kes ini, yang saya dimasukkan ke dalam input. 2268 01:52:42,520 --> 01:52:43,830 Dan saya kembali output. 2269 01:52:43,830 --> 01:52:46,210 Namun, sebelum ini, jika Saya membuka contoh yang lain 2270 01:52:46,210 --> 01:52:51,640 dari awal, yang adalah dipanggil prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Saya mempunyai nama cetak, yang kembali tidak sah, jadi untuk bercakap, 2272 01:52:54,770 --> 01:52:58,730 Atau ia kembali apa-apa, dan hanya mempunyai kesan sampingan. 2273 01:52:58,730 --> 01:53:00,230 >> Jadi apa yang berlaku di sini? 2274 01:53:00,230 --> 01:53:03,520 Well, pertimbangkan fungsi mendapatkan tali hanya untuk seketika. 2275 01:53:03,520 --> 01:53:06,570 Kami telah menggunakan fungsi mendapatkan tali dengan cara yang berikut. 2276 01:53:06,570 --> 01:53:10,464 >> Kami telah mempunyai fungsi yang mendapatkan string, seperti termasuk CS50.h, 2277 01:53:10,464 --> 01:53:16,624 termasuk standard io.h, int, utama, tidak sah. 2278 01:53:16,624 --> 01:53:18,790 Dan kemudian setiap kali saya telah dipanggil mendapatkan tali setakat ini, 2279 01:53:18,790 --> 01:53:23,260 Saya telah berkata sesuatu seperti, rentetan s mendapat mendapatkan tali, kerana get string-- 2280 01:53:23,260 --> 01:53:27,880 mari kita memanggil mendapatkan tali get.c-- ini sendiri mengembalikan rentetan yang saya boleh kemudian 2281 01:53:27,880 --> 01:53:32,050 digunakan, dan berkata, hello, koma, peratus s, garis sendeng terbalik n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Jadi ini adalah contoh yang sama, benar-benar, bahawa kita sebelum ini. 2283 01:53:35,660 --> 01:53:37,920 Jadi mendapatkan rentetan mengembalikan nilai. 2284 01:53:37,920 --> 01:53:41,260 Tetapi masa yang lalu, rentetan cetak tidak mengembalikan nilai. 2285 01:53:41,260 --> 01:53:42,721 Ia hanya mempunyai kesan sampingan. 2286 01:53:42,721 --> 01:53:44,220 Jadi ini adalah perbezaan asas. 2287 01:53:44,220 --> 01:53:46,710 Kami telah melihat yang berbeza jenis fungsi sekarang, 2288 01:53:46,710 --> 01:53:49,490 ada yang telah kembali nilai, ada yang tidak. 2289 01:53:49,490 --> 01:53:51,890 Jadi mungkin ia adalah tali, atau int, atau terapung. 2290 01:53:51,890 --> 01:53:53,480 Atau mungkin ia hanya tidak sah. 2291 01:53:53,480 --> 01:53:55,710 >> Dan perbezaan itu adalah bahawa fungsi-fungsi ini yang 2292 01:53:55,710 --> 01:53:59,940 mendapatkan data dan mengembalikan nilai sebenarnya membawa sesuatu kembali ke meja, 2293 01:53:59,940 --> 01:54:01,110 boleh dikatakan. 2294 01:54:01,110 --> 01:54:03,710 Jadi mari kita pergi ke hadapan dan melihat satu set akhir 2295 01:54:03,710 --> 01:54:09,129 contoh yang memberikan rasa yang, sekarang, bagaimana kita mungkin, sesungguhnya, abstrak yang lebih baik, 2296 01:54:09,129 --> 01:54:11,670 dan lebih baik, dan lebih baik, atau lebih, dan banyak lagi, dan banyak lagi, untuk 2297 01:54:11,670 --> 01:54:13,810 untuk menulis, akhirnya, kod yang lebih baik. 2298 01:54:13,810 --> 01:54:16,860 Mari kita pergi ke hadapan, dan dalam semangat daripada Awal, lakukan yang berikut. 2299 01:54:16,860 --> 01:54:21,700 >> Biar saya pergi ke hadapan dan termasuk CS50.h dan io.h. standard 2300 01:54:21,700 --> 01:54:24,010 Biar saya pergi ke hadapan dan memberi diri saya int, utama, tidak sah. 2301 01:54:24,010 --> 01:54:27,380 Dan biarlah saya pergi ke hadapan, memanggil cough.c ini. 2302 01:54:27,380 --> 01:54:35,510 >> Dan biarlah saya pergi ke hadapan dan hanya seperti Awal, mencetak batuk / n. 2303 01:54:35,510 --> 01:54:37,170 Dan saya mahu untuk melakukan ini tiga kali. 2304 01:54:37,170 --> 01:54:39,670 Jadi saya, sudah tentu, hanya akan copy dan paste tiga kali. 2305 01:54:39,670 --> 01:54:46,440 Saya kini akan membuat batuk slash batuk dot. 2306 01:54:46,440 --> 01:54:50,120 Mari kita memberikan diri saya bilik yang lebih kecil di sini, Masukkan, batuk, batuk, batuk. 2307 01:54:50,120 --> 01:54:53,970 >> Ada, jelas, sudah menjadi peluang untuk penambahbaikan. 2308 01:54:53,970 --> 01:54:55,679 Saya telah disalin dan ditampal beberapa kali hari ini. 2309 01:54:55,679 --> 01:54:58,261 Tetapi itu adalah hanya supaya saya tidak perlu menaip aksara banyak. 2310 01:54:58,261 --> 01:55:00,250 Saya masih berubah apa orang-orang baris kod berada. 2311 01:55:00,250 --> 01:55:04,240 >> Ketiga-tiga baris adalah sama, yang berasa malas dan sebenarnya adalah, 2312 01:55:04,240 --> 01:55:07,110 dan mungkin tidak pendekatan yang betul. 2313 01:55:07,110 --> 01:55:11,029 Jadi dengan apa bahan kita boleh meningkatkan kod ini? 2314 01:55:11,029 --> 01:55:12,570 Kami tidak perlu copy dan paste kod. 2315 01:55:12,570 --> 01:55:15,070 >> Dan, sememangnya, bila-bila masa anda rasa diri anda menyalin dan menampal, 2316 01:55:15,070 --> 01:55:17,700 dan tidak menukar kod, Kemungkinan ada cara yang lebih baik. 2317 01:55:17,700 --> 01:55:19,470 Dan sesungguhnya, ada. 2318 01:55:19,470 --> 01:55:22,510 Biar saya pergi ke hadapan dan melakukan untuk gelung, walaupun sintaks yang tidak mungkin 2319 01:55:22,510 --> 01:55:24,570 datang secara semula jadi lagi. 2320 01:55:24,570 --> 01:55:29,494 >> Adakah ini tiga kali, semata-mata dengan melakukan following-- yang 2321 01:55:29,494 --> 01:55:31,160 dan saya kebetulan tahu ini daripada amalan. 2322 01:55:31,160 --> 01:55:32,810 Tetapi kita mempunyai beberapa contoh sekarang. 2323 01:55:32,810 --> 01:55:34,950 Dan anda akan melihat dalam talian lebih rujukan masih. 2324 01:55:34,950 --> 01:55:37,790 >> Ini adalah sintaks pada baris 6, yang sama seperti calar yang berulang 2325 01:55:37,790 --> 01:55:40,090 blok, ulang berikut tiga kali. 2326 01:55:40,090 --> 01:55:41,340 Ia ajaib sedikit buat masa sekarang. 2327 01:55:41,340 --> 01:55:43,050 Tetapi ini akan mendapat lebih banyak, dan lebih biasa. 2328 01:55:43,050 --> 01:55:45,050 >> Dan ia akan mengulangi garis lapan tiga kali, 2329 01:55:45,050 --> 01:55:52,390 supaya jika saya semula menyusun-make batuk, dot mengurangkan batuk, batuk, batuk, batuk. 2330 01:55:52,390 --> 01:55:54,030 Ia masih berfungsi dengan cara yang sama. 2331 01:55:54,030 --> 01:55:55,550 Jadi itu semua baik dan baik. 2332 01:55:55,550 --> 01:55:58,200 Tetapi itu bukan sangat cabutan. 2333 01:55:58,200 --> 01:55:59,371 >> Ia sempurna betul. 2334 01:55:59,371 --> 01:56:01,370 Tetapi ia merasakan seperti ada boleh menjadi peluang, 2335 01:56:01,370 --> 01:56:03,750 seperti dalam dunia Awal, untuk jenis permulaan 2336 01:56:03,750 --> 01:56:07,530 untuk menambah beberapa semantik di sini supaya Saya tidak hanya mempunyai beberapa untuk gelung, 2337 01:56:07,530 --> 01:56:09,867 dan fungsi yang mengatakan batuk, atau adakah batuk. 2338 01:56:09,867 --> 01:56:10,450 Awak tahu tak? 2339 01:56:10,450 --> 01:56:12,620 Biar saya cuba untuk menjadi sejuk sedikit daripada itu, 2340 01:56:12,620 --> 01:56:16,090 dan benar-benar menulis fungsi yang mempunyai beberapa kesan sampingan, memanggilnya batuk. 2341 01:56:16,090 --> 01:56:20,830 >> Dan ia tidak mengambil input dan mengembalikan tiada nilai sebagai output. 2342 01:56:20,830 --> 01:56:22,680 Tetapi anda tahu apa yang dilakukan? 2343 01:56:22,680 --> 01:56:29,370 Ia printf this--, quote unquote, batuk. 2344 01:56:29,370 --> 01:56:32,380 >> Dan kini di sini, saya akan pergi ke hadapan dan untuk int, 2345 01:56:32,380 --> 01:56:36,070 i mendapat sifar, i kurang daripada 3, i plus plus. 2346 01:56:36,070 --> 01:56:39,770 Saya akan tidak printf, yang boleh dikatakan pelaksanaan tahap rendah 2347 01:56:39,770 --> 01:56:40,270 detail. 2348 01:56:40,270 --> 01:56:41,353 Saya tidak peduli bagaimana untuk batuk. 2349 01:56:41,353 --> 01:56:43,240 Saya hanya hendak menggunakan fungsi batuk. 2350 01:56:43,240 --> 01:56:44,840 Dan saya hanya akan memanggil batuk. 2351 01:56:44,840 --> 01:56:46,204 >> Sekarang, perhatikan dikotomi. 2352 01:56:46,204 --> 01:56:49,370 Apabila anda memanggil fungsi, jika anda tidak mahu memberikan input, betul-betul halus. 2353 01:56:49,370 --> 01:56:51,780 Hanya melakukan paren terbuka, berhampiran paren, dan anda selesai. 2354 01:56:51,780 --> 01:56:56,271 >> Apabila anda menentukan fungsi, atau mengisytiharkan prototaip fungsi ini, 2355 01:56:56,271 --> 01:56:58,770 jika anda tahu terlebih dahulu ia bukan akan mengambil apa-apa hujah, 2356 01:56:58,770 --> 01:57:01,170 mengatakan tidak sah dalam orang-orang kurungan di sana. 2357 01:57:01,170 --> 01:57:05,660 Dan yang membuat tertentu yang anda tidak akan sengaja menyalahgunakannya. 2358 01:57:05,660 --> 01:57:07,020 Biar saya pergi ke hadapan dan membuat batuk. 2359 01:57:07,020 --> 01:57:08,540 Dan, sudah tentu, saya telah membuat kesilapan. 2360 01:57:08,540 --> 01:57:10,410 >> Keparat, ada yang pengakuan tersirat. 2361 01:57:10,410 --> 01:57:11,325 Tetapi itulah denda. 2362 01:57:11,325 --> 01:57:12,590 Ia merupakan satu menetapkan mudah. 2363 01:57:12,590 --> 01:57:18,240 Saya hanya perlu prototaip lebih tinggi dalam fail saya daripada saya benar-benar menggunakannya. 2364 01:57:18,240 --> 01:57:20,070 >> Jadi sekarang mari saya membuat batuk lagi, bagus. 2365 01:57:20,070 --> 01:57:20,790 Kini, ia berfungsi. 2366 01:57:20,790 --> 01:57:22,930 Membuat batuk, batuk, batuk, batuk. 2367 01:57:22,930 --> 01:57:25,930 Jadi, anda mungkin berfikir bahawa kita benar-benar hanya lebih kejuruteraan masalah ini. 2368 01:57:25,930 --> 01:57:26,763 Dan, sememangnya, kita berada. 2369 01:57:26,763 --> 01:57:28,870 Ini bukan satu yang baik Calon program yang 2370 01:57:28,870 --> 01:57:31,930 pada masa ini untuk refactoring, dan melakukan apa yang 2371 01:57:31,930 --> 01:57:35,645 dipanggil penguraian hierarki, di mana anda mengambil beberapa kod, dan kemudian 2372 01:57:35,645 --> 01:57:38,790 anda jenis faktor perkara keluar, supaya untuk mengada-adakan lebih semantik kepada mereka, 2373 01:57:38,790 --> 01:57:40,930 dan menggunakannya semula jangka akhirnya lebih lama. 2374 01:57:40,930 --> 01:57:43,490 Tetapi ia adalah satu blok bangunan ke arah program yang lebih canggih 2375 01:57:43,490 --> 01:57:45,600 itu kita akan mula menulis sebelum panjang yang 2376 01:57:45,600 --> 01:57:50,090 membolehkan kita untuk mempunyai perbendaharaan kata yang boleh digunakan untuk menulis kod yang lebih baik. 2377 01:57:50,090 --> 01:57:52,920 Dan, sememangnya, mari kita lihat jika kita tidak boleh umum ini dengan lebih lanjut. 2378 01:57:52,920 --> 01:57:57,984 >> Ia seolah-olah lumpuh kecil yang saya, utama, perlu bimbang tentang darn ini untuk gelung, 2379 01:57:57,984 --> 01:57:59,400 dan memanggil batuk lagi dan lagi. 2380 01:57:59,400 --> 01:58:03,050 Mengapa saya tidak boleh hanya memberitahu batuk, sila batuk tiga kali? 2381 01:58:03,050 --> 01:58:08,170 Dalam erti kata lain, mengapa tidak saya memberi input untuk batuk dan melakukan ini? 2382 01:58:08,170 --> 01:58:11,270 >> Mengapa saya tidak boleh hanya berkata, dalam batuk utama tiga kali. 2383 01:58:11,270 --> 01:58:13,150 Dan sekarang, ini adalah jenis ajaib. 2384 01:58:13,150 --> 01:58:14,540 Ia amat lelaran di sini. 2385 01:58:14,540 --> 01:58:15,940 Dan ia adalah, sememangnya, satu langkah bayi. 2386 01:58:15,940 --> 01:58:19,250 >> Tetapi hanya keupayaan untuk mengatakan pada garis lapan, batuk tiga kali, 2387 01:58:19,250 --> 01:58:20,730 ia hanya begitu banyak lebih mudah dibaca. 2388 01:58:20,730 --> 01:58:24,210 Dan, plus, saya tidak perlu tahu atau mengambil berat bagaimana batuk dilaksanakan. 2389 01:58:24,210 --> 01:58:26,460 Dan, sememangnya, kemudian dalam jangka dan untuk projek akhir, 2390 01:58:26,460 --> 01:58:29,150 jika anda menangani projek dengan seorang rakan sekelas atau dua rakan sekelas, 2391 01:58:29,150 --> 01:58:32,370 anda akan menyedari bahawa anda akan perlu, atau mahu, bahagikan kerja. 2392 01:58:32,370 --> 01:58:34,650 >> Dan anda akan mahu untuk membuat keputusan terlebih dahulu, siapa yang akan melakukan apa, 2393 01:58:34,650 --> 01:58:35,483 dan di mana keping? 2394 01:58:35,483 --> 01:58:37,520 Dan ia tidak akan menjadi baik jika anda, sebagai contoh, 2395 01:58:37,520 --> 01:58:40,100 mengendalikan bertulis utama, dilakukan. 2396 01:58:40,100 --> 01:58:43,470 Dan rakan sebilik anda, atau anda rakan kongsi lebih umum, 2397 01:58:43,470 --> 01:58:45,230 menjaga melaksanakan batuk. 2398 01:58:45,230 --> 01:58:49,540 >> Dan bahagian ini, ini dinding abstraksi, 2399 01:58:49,540 --> 01:58:52,310 atau lapisan abstraksi jika anda akan, adalah super kuat, 2400 01:58:52,310 --> 01:58:55,480 kerana terutamanya untuk lebih besar, lebih banyak program yang kompleks dan sistem, 2401 01:58:55,480 --> 01:59:00,070 ia membolehkan beberapa orang untuk membina perkara bersama-sama, dan akhirnya 2402 01:59:00,070 --> 01:59:02,680 menjahit kerja mereka bersama-sama dengan cara ini. 2403 01:59:02,680 --> 01:59:05,332 Tetapi, sudah tentu, kita perlu kini menetapkan batuk. 2404 01:59:05,332 --> 01:59:07,290 Kita perlu beritahu batuk itu, hey, anda tahu apa? 2405 01:59:07,290 --> 01:59:11,230 Anda akan perlu untuk mengambil input-- jadi tidak sah, tetapi int dan kini. 2406 01:59:11,230 --> 01:59:15,170 Mari kita pergi ke hadapan dan dimasukkan ke dalam batuk int. i mendapat sifar. 2407 01:59:15,170 --> 01:59:16,890 >> i adalah kurang daripada berapa kali. 2408 01:59:16,890 --> 01:59:18,550 Saya berkata tiga sebelum ini. 2409 01:59:18,550 --> 01:59:20,420 Tetapi itu bukan apa yang saya mahu. 2410 01:59:20,420 --> 01:59:25,520 Saya mahu batuk untuk digeneralisasikan kepada menyokong apa-apa bilangan lelaran. 2411 01:59:25,520 --> 01:59:28,800 >> Jadi, sesungguhnya, ia n yang saya mahu, apa pengguna memberitahu saya. 2412 01:59:28,800 --> 01:59:31,620 Sekarang, saya boleh pergi ke hadapan dan berkata cetak batuk. 2413 01:59:31,620 --> 01:59:34,750 Dan tidak kira apa nombor pengguna lulus dalam, 2414 01:59:34,750 --> 01:59:36,890 Saya akan melelar bahawa banyak kali. 2415 01:59:36,890 --> 01:59:39,160 >> Jadi, pada akhir hari, program adalah sama. 2416 01:59:39,160 --> 01:59:42,820 Tetapi melihat semua barangan ini juga boleh menjadi dalam fail lain. 2417 01:59:42,820 --> 01:59:45,620 Sesungguhnya, saya tidak tahu di seketika bagaimana printf dilaksanakan. 2418 01:59:45,620 --> 01:59:47,980 >> Saya tidak tahu pada masa ini bagaimana mendapatkan tali, atau mendapatkan int, atau mendapatkan apungan 2419 01:59:47,980 --> 01:59:48,646 dilaksanakan. 2420 01:59:48,646 --> 01:59:50,930 Dan saya tidak mahu melihat mereka pada skrin saya. 2421 01:59:50,930 --> 01:59:55,320 Oleh kerana, saya mula memberi tumpuan kepada program saya, bukan mereka fungsi. 2422 01:59:55,320 --> 01:59:59,070 >> Dan sebagainya, sesungguhnya, sebaik sahaja anda mula faktor kod seperti ini keluar, 2423 01:59:59,070 --> 02:00:01,397 boleh kita bahkan bergerak batuk untuk fail yang berasingan? 2424 02:00:01,397 --> 02:00:02,730 Orang lain boleh melaksanakannya. 2425 02:00:02,730 --> 02:00:06,810 Dan anda dan program anda menjadi sangat cantik, dan sangat boleh dibaca, 2426 02:00:06,810 --> 02:00:10,830 boleh dikatakan, benar-benar empat program garis di sana. 2427 02:00:10,830 --> 02:00:13,510 >> Jadi mari kita pergi ke hadapan sekarang dan membuat satu lagi perubahan. 2428 02:00:13,510 --> 02:00:16,180 Perhatikan bahawa prototaip saya perlu berubah sehingga atas. 2429 02:00:16,180 --> 02:00:18,390 Jadi biarlah saya menetapkan bahawa begitu Saya tidak dapat menjerit. 2430 02:00:18,390 --> 02:00:22,580 >> Membuat batuk, biarlah aku berlari batuk sekali lanjut, masih melakukan perkara yang sama. 2431 02:00:22,580 --> 02:00:26,010 Tetapi sekarang, melihat kita mempunyai bahan untuk satu versi akhir. 2432 02:00:26,010 --> 02:00:26,940 Awak tahu tak? 2433 02:00:26,940 --> 02:00:29,040 Saya tidak mahu hanya batuk, semestinya. 2434 02:00:29,040 --> 02:00:30,802 Saya ingin mempunyai sesuatu yang lebih umum. 2435 02:00:30,802 --> 02:00:31,510 Jadi, anda tahu apa? 2436 02:00:31,510 --> 02:00:32,450 Saya mahu untuk melakukan ini. 2437 02:00:32,450 --> 02:00:37,140 Saya ingin mempunyai, sama seperti Scratch tidak, satu blok katakan, tetapi tidak hanya 2438 02:00:37,140 --> 02:00:38,680 mengatakan sesuatu beberapa beberapa kali. 2439 02:00:38,680 --> 02:00:41,510 Saya mahu untuk mengatakan rentetan yang sangat khusus. 2440 02:00:41,510 --> 02:00:43,850 Dan, oleh itu, saya tidak mahu ia untuk hanya mengatakan batuk. 2441 02:00:43,850 --> 02:00:47,660 Saya mahu untuk mengatakan apa sahaja rentetan diluluskan di. 2442 02:00:47,660 --> 02:00:49,960 >> Jadi notis, saya telah umum ini supaya sekarang 2443 02:00:49,960 --> 02:00:53,110 katakan berasa seperti nama yang baik untuk ini, seperti Awal, 2444 02:00:53,110 --> 02:00:55,530 mengambil masa dua hujah, tidak seperti Scratch. 2445 02:00:55,530 --> 02:00:56,570 Satu adalah rentetan. 2446 02:00:56,570 --> 02:00:57,300 Satu adalah int. 2447 02:00:57,300 --> 02:00:58,130 >> Dan saya boleh menukar mereka. 2448 02:00:58,130 --> 02:01:00,713 Saya hanya jenis seperti idea berkata rentetan pertama, dan kemudian 2449 02:01:00,713 --> 02:01:01,940 berapa kali kemudian. 2450 02:01:01,940 --> 02:01:03,970 Void bermakna ia masih tidak kembali apa-apa. 2451 02:01:03,970 --> 02:01:06,428 Ini hanya sebelah visual kesan, seperti dengan [? Jordan,?] 2452 02:01:06,428 --> 02:01:08,240 kesan sampingan lisan menjerit. 2453 02:01:08,240 --> 02:01:12,630 Ia masih tidak kali sesuatu n, 0 sehingga, tetapi tidak sama dengan n. 2454 02:01:12,630 --> 02:01:14,540 Ini bermakna kali n total. 2455 02:01:14,540 --> 02:01:16,540 Dan kemudian hanya mencetak apa sahaja rentetan yang. 2456 02:01:16,540 --> 02:01:19,060 Jadi saya telah benar-benar umum baris kod. 2457 02:01:19,060 --> 02:01:22,460 Jadi sekarang, bagaimana saya melaksanakan fungsi batuk? 2458 02:01:22,460 --> 02:01:25,520 >> Saya mempunyai batuk tidak sah. 2459 02:01:25,520 --> 02:01:28,501 Dan saya masih boleh menikmati bagaimana banyak kali yang anda mahu untuk batuk. 2460 02:01:28,501 --> 02:01:29,250 Tetapi anda tahu apa? 2461 02:01:29,250 --> 02:01:31,240 Saya kini boleh menyepak bola untuk mengatakan. 2462 02:01:31,240 --> 02:01:36,540 >> Boleh saya hubungi berkata dengan perkataan batuk, lulus dalam n. 2463 02:01:36,540 --> 02:01:40,410 Dan jika saya ingin juga melaksanakan, hanya untuk keseronokan, fungsi bersin, 2464 02:01:40,410 --> 02:01:42,290 Saya boleh bersin beberapa beberapa kali. 2465 02:01:42,290 --> 02:01:47,300 Dan saya boleh menyimpan menggunakan semula n, kerana melihat bahawa m dalam konteks ini atau skop 2466 02:01:47,300 --> 02:01:49,470 hanya wujud dalam fungsi ini. 2467 02:01:49,470 --> 02:01:52,767 >> Dan n dalam konteks ini sahaja wujud dalam fungsi ini di sini. 2468 02:01:52,767 --> 02:01:54,600 Oleh itu, kita akan kembali kepada isu-isu ini skop. 2469 02:01:54,600 --> 02:02:01,160 Dan di sini, saya hanya akan berkata, achoo, dan kemudian n kali, semi-kolon. 2470 02:02:01,160 --> 02:02:04,340 >> Dan sekarang, saya hanya perlu meminjam fungsi ini tandatangan di sini. 2471 02:02:04,340 --> 02:02:06,290 Jadi batuk adalah betul. 2472 02:02:06,290 --> 02:02:10,090 bersin tidak sah adalah betul sekarang. 2473 02:02:10,090 --> 02:02:12,390 >> Dan saya masih hanya perlu katakan. 2474 02:02:12,390 --> 02:02:18,990 Jadi, saya akan katakan, katakan rentetan s, int n, semi-kolon. 2475 02:02:18,990 --> 02:02:22,010 Jadi saya telah direkayasa over-the palang pintu keluar dari program ini. 2476 02:02:22,010 --> 02:02:23,760 >> Dan ini tidak bermakna ini adalah 2477 02:02:23,760 --> 02:02:26,343 apa yang perlu anda lakukan semasa menulis walaupun yang paling mudah program. 2478 02:02:26,343 --> 02:02:29,280 Mengambil sesuatu yang jelas benar-benar mudah, benar-benar pendek, 2479 02:02:29,280 --> 02:02:31,800 dan semula melaksanakan-it menggunakan terlalu banyak kod. 2480 02:02:31,800 --> 02:02:34,560 Tetapi anda sebenarnya akan melihat, dan dalam masa melihat kembali pada contoh-contoh ini, 2481 02:02:34,560 --> 02:02:38,610 menyedarinya, oh, mereka adalah langkah-langkah kami mengambil untuk benar-benar umum, 2482 02:02:38,610 --> 02:02:40,797 untuk faktor sesuatu yang keluar, sehingga di akhir hari 2483 02:02:40,797 --> 02:02:42,380 kod saya sebenarnya cukup munasabah. 2484 02:02:42,380 --> 02:02:45,960 Kerana jika saya mahu batuk tiga kali kemudian bersin tiga kali, 2485 02:02:45,960 --> 02:02:50,420 Saya hanya akan menjalankan semula ini, program membuat batuk, dan menjalankan batuk. 2486 02:02:50,420 --> 02:02:53,620 Dan saya mempunyai tiga batuk dan tiga bersin. 2487 02:02:53,620 --> 02:02:55,990 >> Dan hal ini adalah asas paradigma, jika anda akan, 2488 02:02:55,990 --> 02:03:00,110 untuk bagaimana kita boleh pergi tentang sebenarnya melaksanakan program. 2489 02:03:00,110 --> 02:03:03,220 Tetapi mari kita lihat sekarang apa yang ada kami telah melakukan semua masa ini, 2490 02:03:03,220 --> 02:03:06,940 dan apa yang beberapa kepingan terakhir berada di belakang arahan ini mudah. 2491 02:03:06,940 --> 02:03:09,620 Pada akhir hari, kami telah telah menggunakan dilafaz sebagai pengkompil kami. 2492 02:03:09,620 --> 02:03:11,494 Kami telah menulis sumber kod, ditukarkan 2493 02:03:11,494 --> 02:03:12,820 melalui dilafaz kepada kod mesin. 2494 02:03:12,820 --> 02:03:15,540 >> Dan kita telah menggunakan Selesakan hanya untuk memudahkan ketukan kekunci kami supaya 2495 02:03:15,540 --> 02:03:20,740 bahawa kita tidak perlu ingat mereka penjampian dilafaz sendiri. 2496 02:03:20,740 --> 02:03:22,640 Tetapi apa yang Selesakan sebenarnya melakukan? 2497 02:03:22,640 --> 02:03:24,750 Dan, seterusnya, apa yang Dilafaz sebenarnya melakukan? 2498 02:03:24,750 --> 02:03:28,790 >> Ternyata, walaupun kita telah dipermudahkan perbincangan pada hari ini dengan berkata, 2499 02:03:28,790 --> 02:03:33,090 anda mengambil kod sumber, lulus ia input kepada pengkompil, yang memberikan anda 2500 02:03:33,090 --> 02:03:35,750 output mesin kod, ternyata ada yang 2501 02:03:35,750 --> 02:03:37,420 beberapa langkah yang berbeza di dalam sana. 2502 02:03:37,420 --> 02:03:41,940 Dan menyusun berlaku untuk menjadi payung istilah untuk sejumlah besar langkah-langkah. 2503 02:03:41,940 --> 02:03:43,970 Tetapi mari kita hanya mengusik keluar ini benar-benar cepat. 2504 02:03:43,970 --> 02:03:48,070 >> Ia ternyata bahawa kita telah melakukan lebih banyak perkara setiap kali saya menjalankan program, 2505 02:03:48,070 --> 02:03:50,990 atau setiap kali saya menyusun program hari ini. 2506 02:03:50,990 --> 02:03:55,020 Jadi pra pemprosesan merujuk kepada this-- apa-apa dalam program C, 2507 02:03:55,020 --> 02:03:58,720 seperti yang kita akan melihat lagi dan sekali lagi, yang bermula dengan simbol hash ini, 2508 02:03:58,720 --> 02:04:03,320 atau simbol hashtag di sini, bermakna ia adalah satu arahan prapemproses. 2509 02:04:03,320 --> 02:04:07,330 Ini bermakna, dalam kes ini, hey komputer, melakukan sesuatu dengan fail ini 2510 02:04:07,330 --> 02:04:09,430 sebelum anda sebenarnya menyusun kod saya sendiri. 2511 02:04:09,430 --> 02:04:15,220 >> Dalam kes ini, hash termasuk iaitu, dasarnya, cara C untuk mengatakan, 2512 02:04:15,220 --> 02:04:19,325 hey komputer, pergi mendapatkan kandungan daripada CS50.h dan paste di sini. 2513 02:04:19,325 --> 02:04:22,170 Hey komputer, pergi mendapatkan kandungan standard io.h, 2514 02:04:22,170 --> 02:04:24,690 di mana sahaja yang ada di atas cakera keras, paste di sini. 2515 02:04:24,690 --> 02:04:27,390 Jadi perkara-perkara berlaku pertama semasa pra pemprosesan. 2516 02:04:27,390 --> 02:04:28,880 >> Dan dilafaz melakukan semua ini untuk kita. 2517 02:04:28,880 --> 02:04:30,510 Dan ia begitu darn cepat, anda tidak walaupun 2518 02:04:30,510 --> 02:04:32,000 melihat empat perkara berbeza berlaku. 2519 02:04:32,000 --> 02:04:34,100 Tetapi itu langkah sedemikian yang pertama. 2520 02:04:34,100 --> 02:04:35,560 >> Apa yang sebenarnya berlaku seterusnya? 2521 02:04:35,560 --> 02:04:38,320 Well, rasmi seterusnya langkah sedang mengumpul. 2522 02:04:38,320 --> 02:04:40,385 Dan ternyata bahawa menyusun program 2523 02:04:40,385 --> 02:04:44,060 teknikal bermakna pergi dari kod sumber, barangan yang kami telah 2524 02:04:44,060 --> 02:04:47,890 telah menulis hari ini, untuk sesuatu dipanggil kod pemasangan, sesuatu 2525 02:04:47,890 --> 02:04:49,260 yang kelihatan sedikit berbeza. 2526 02:04:49,260 --> 02:04:51,050 >> Dan, sebenarnya, kita boleh melihat ini sebenar cepat. 2527 02:04:51,050 --> 02:04:53,890 Biar saya benar-benar pergi ke IDE saya. 2528 02:04:53,890 --> 02:04:58,050 Biar saya pergi ke hadapan dan hello.c terbuka, yang adalah program yang pertama yang kita 2529 02:04:58,050 --> 02:04:59,120 bermula hari ini. 2530 02:04:59,120 --> 02:05:04,130 Dan biarlah saya pergi ke hadapan dan menjalankan dilafaz yang sedikit berbeza, dilafaz-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 yang sebenarnya akan memberi saya satu lagi hello.s fail. 2532 02:05:07,720 --> 02:05:10,330 >> Dan kita akan mungkin tidak pernah lagi melihat ini jenis kod. 2533 02:05:10,330 --> 02:05:13,030 Jika anda mengambil tahap yang lebih rendah kelas sistem seperti CS61, 2534 02:05:13,030 --> 02:05:14,920 anda akan melihat lebih banyak ini jenis kod. 2535 02:05:14,920 --> 02:05:17,020 Tetapi ini adalah bahasa himpunan. 2536 02:05:17,020 --> 02:05:22,050 Ini adalah bahasa perhimpunan X86 bahawa CPU yang mendasari 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE sebenarnya memahami. 2538 02:05:24,460 --> 02:05:27,060 >> Dan samar kerana ia tidak melihat, ia adalah sesuatu yang 2539 02:05:27,060 --> 02:05:29,180 komputer memahami dengan baik. 2540 02:05:29,180 --> 02:05:30,790 Sub q, ini adalah tolak a. 2541 02:05:30,790 --> 02:05:31,660 Ada pergerakan. 2542 02:05:31,660 --> 02:05:35,730 >> Terdapat yang memanggil fungsi sini, x Oring, pergerakan, add satu, pop, 2543 02:05:35,730 --> 02:05:36,430 pulangan. 2544 02:05:36,430 --> 02:05:38,850 Jadi ada beberapa yang sangat arahan peringkat rendah 2545 02:05:38,850 --> 02:05:41,280 bahawa CPU faham bahawa Saya katakan sebelum ini. 2546 02:05:41,280 --> 02:05:43,100 Itulah yang Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> Terdapat corak sifar dan orang-orang yang 2548 02:05:45,030 --> 02:05:51,800 memetakan ini arcanely worded, tetapi agak yang dinamakan, arahan, 2549 02:05:51,800 --> 02:05:52,780 boleh dikatakan. 2550 02:05:52,780 --> 02:05:54,780 Itulah yang berlaku apabila anda menyusun kod anda. 2551 02:05:54,780 --> 02:05:58,560 Anda mendapatkan pemasangan bahasa daripada itu, yang 2552 02:05:58,560 --> 02:06:04,680 bermakna langkah ketiga adalah untuk memasang bahawa kod pemasangan ke dalam, akhirnya, 2553 02:06:04,680 --> 02:06:09,080 mesin sifar code-- dan orang, bukan teks yang kita hanya melihat sebentar tadi. 2554 02:06:09,080 --> 02:06:13,370 >> Jadi pra-pemprosesan adakah itu mencari dan menggantikan, dan beberapa perkara lain. 2555 02:06:13,370 --> 02:06:16,430 Mengkompilasi mengambil sumber anda kod dari C, kod sumber 2556 02:06:16,430 --> 02:06:18,980 bahawa kita menulis, suatu kumpulan kod yang kita hanya mengerling. 2557 02:06:18,980 --> 02:06:22,170 Memasang mengambil perkumpulan kod untuk sifar dan orang-orang yang 2558 02:06:22,170 --> 02:06:24,680 bahawa CPU benar-benar akan memahami pada akhir hari. 2559 02:06:24,680 --> 02:06:27,630 Dan menghubungkan adalah langkah terakhir yang berlaku untuk us-- lagi, 2560 02:06:27,630 --> 02:06:29,830 begitu pantas kita tidak walaupun notice-- yang mengatakan, 2561 02:06:29,830 --> 02:06:32,460 hey komputer, mengambil semua sifar dan orang-orang yang 2562 02:06:32,460 --> 02:06:36,750 hasil daripada menyusun kod Daud, dan fungsi utama beliau dalam kes ini. 2563 02:06:36,750 --> 02:06:39,160 >> Dan hey komputer, pergi mendapatkan semua sifar dan satu 2564 02:06:39,160 --> 02:06:42,180 bahawa kakitangan CS50 menulis dalam perpustakaan CS50. 2565 02:06:42,180 --> 02:06:43,440 Campurkan mereka yang dengan Daud. 2566 02:06:43,440 --> 02:06:46,648 Dan hey komputer, pergi mendapatkan semua sifar dan orang-orang yang orang lain menulis tahun 2567 02:06:46,648 --> 02:06:47,470 lalu untuk printf. 2568 02:06:47,470 --> 02:06:49,880 Dan menambah mereka ke dalam keseluruhan perkara, supaya kita ada 2569 02:06:49,880 --> 02:06:52,870 mendapat sifar dan satu saya, sifar dan satu kakitangan CS50, 2570 02:06:52,870 --> 02:06:55,370 sifar printf dan orang-orang yang, dan apa-apa lagi yang kami gunakan. 2571 02:06:55,370 --> 02:07:00,410 >> Mereka semua mendapat digabungkan bersama-sama ke dalam satu program dipanggil, dalam kes ini, hello. 2572 02:07:00,410 --> 02:07:03,141 Jadi selepas ini, kita akan hanya menggunakan Mengkompilasi perkataan. 2573 02:07:03,141 --> 02:07:06,390 Dan kita akan mengambil mudah bahawa apabila kita katakan, menyusun program anda, ia bermakna, 2574 02:07:06,390 --> 02:07:08,849 hey melakukan pra-pemprosesan, memasang, dan menghubungkan. 2575 02:07:08,849 --> 02:07:11,890 Tetapi ada sebenarnya beberapa barangan berair berlaku di sana di bawah hood. 2576 02:07:11,890 --> 02:07:13,723 Dan terutamanya jika anda mendapatkan ingin tahu beberapa waktu, 2577 02:07:13,723 --> 02:07:15,900 anda boleh mula poking sekitar di peringkat yang lebih rendah ini. 2578 02:07:15,900 --> 02:07:19,660 Tetapi buat masa ini, menyedari bahawa antara bawa pulang untuk hari ini 2579 02:07:19,660 --> 02:07:23,420 agak semata-mata bermula daripada proses, 2580 02:07:23,420 --> 02:07:26,700 untuk mendapatkan selesa dengan sesuatu seperti dunia hello. 2581 02:07:26,700 --> 02:07:29,575 Malah, sebahagian besar daripada apa yang kita lakukan hari ini pasti tidak akan tenggelam dalam super cepat. 2582 02:07:29,575 --> 02:07:31,491 Dan ia akan mengambil sedikit masa, dan beberapa amalan. 2583 02:07:31,491 --> 02:07:33,864 Dan kemungkinan besar, anda akan menyusun daripada mahu memukul keyboard anda 2584 02:07:33,864 --> 02:07:34,780 atau menjerit pada skrin. 2585 02:07:34,780 --> 02:07:35,880 Dan semua itu OK. 2586 02:07:35,880 --> 02:07:38,320 Walaupun, mungkin cuba untuk tidak melakukannya dalam perpustakaan begitu banyak. 2587 02:07:38,320 --> 02:07:40,820 >> Dan akhirnya, anda akan akan dapat walaupun, untuk memulakan 2588 02:07:40,820 --> 02:07:44,580 melihat corak, kedua-dua kod baik yang telah anda tulis dan kesilapan 2589 02:07:44,580 --> 02:07:45,370 yang anda telah dibuat. 2590 02:07:45,370 --> 02:07:48,965 Dan seperti proses menjadi TF atau yang CA adalah seperti, 2591 02:07:48,965 --> 02:07:51,590 anda akan mula menjadi lebih baik dan lebih baik melihat mereka corak, 2592 02:07:51,590 --> 02:07:53,774 dan hanya menyelesaikan anda masalah sendiri akhirnya. 2593 02:07:53,774 --> 02:07:56,940 Dalam pada itu, akan ada banyak kita untuk memberi sokongan anda, dan mendapatkan anda 2594 02:07:56,940 --> 02:07:57,481 melalui ini. 2595 02:07:57,481 --> 02:07:59,450 Dan dalam penulisan untuk semua masalah 2596 02:07:59,450 --> 02:08:01,366 akan anda dibimbing melalui semua arahan 2597 02:08:01,366 --> 02:08:05,330 bahawa saya pasti tahu dari banyak amalan sekarang, 2598 02:08:05,330 --> 02:08:07,380 tetapi mungkin terbang atas kepala seseorang untuk sekarang. 2599 02:08:07,380 --> 02:08:08,580 Dan itu betul-betul halus. 2600 02:08:08,580 --> 02:08:11,230 >> Tetapi, akhirnya, anda akan untuk mula melihat corak muncul. 2601 02:08:11,230 --> 02:08:14,260 Dan sebaik sahaja anda melepasi semua butiran bodoh, seperti kurungan, 2602 02:08:14,260 --> 02:08:16,710 dan pendakap kerinting, dan koma bertindih, dan barang-barang itu, terus-terang, 2603 02:08:16,710 --> 02:08:19,360 yang tidak sama sekali intelektual yang menarik. 2604 02:08:19,360 --> 02:08:22,690 Dan ia bukan objektif mengambil apa-apa kelas pengenalan. 2605 02:08:22,690 --> 02:08:24,410 Ia adalah idea yang akan perkara itu. 2606 02:08:24,410 --> 02:08:26,659 >> Ia adalah gelung, dan syarat, dan fungsi, 2607 02:08:26,659 --> 02:08:30,552 dan lebih kuat pengekstrakan, dan pemfaktoran kod, 2608 02:08:30,552 --> 02:08:33,510 dan reka bentuk yang baik, dan yang baik gaya, dan akhirnya betulnya 2609 02:08:33,510 --> 02:08:37,330 kod anda, itu akhirnya akan perkara yang paling. 2610 02:08:37,330 --> 02:08:40,925 Jadi minggu depan, kami akan mengambil ini idea-idea yang pertama yang kita lihat dalam Scratch 2611 02:08:40,925 --> 02:08:42,800 dan kini telah diterjemahkan C. Dan kita akan mula 2612 02:08:42,800 --> 02:08:45,740 untuk memperkenalkan pertama domain dunia sebenar kursus ini. 2613 02:08:45,740 --> 02:08:50,140 >> Kami akan memberi tumpuan kepada dunia keselamatan, dan lebih khusus kriptografi, 2614 02:08:50,140 --> 02:08:51,980 seni berebut maklumat. 2615 02:08:51,980 --> 02:08:54,000 Dan antara yang pertama masalah anda sendiri 2616 02:08:54,000 --> 02:08:56,840 akan mendapat untuk menulis di luar bermain dengan beberapa sintaks 2617 02:08:56,840 --> 02:08:59,880 dan menyelesaikan beberapa logik masalah, akhirnya tidak lama, 2618 02:08:59,880 --> 02:09:03,960 adalah untuk benar-benar berebut, atau menyulitkan, dan akhirnya menyahsulit maklumat. 2619 02:09:03,960 --> 02:09:06,470 Dan segala-galanya yang kita lakukan hari ini, akan agak rendah 2620 02:09:06,470 --> 02:09:09,190 peringkat, hanya akan membolehkan kita mengambil satu, dan satu, 2621 02:09:09,190 --> 02:09:13,550 dan satu lagi langkah ke arah atas menulis kod yang paling menarik lagi. 2622 02:09:13,550 --> 02:09:15,050 >> Jadi lebih pada minggu depan. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VIDEO MAIN SEMULA] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Apa Anda boleh beritahu saya tentang kali terakhir anda melihat dia? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Apa Yang boleh saya katakan, benar-benar? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Maksud saya, ia adalah seperti yang lain latihan pra-pengeluaran, 2631 02:09:35,340 --> 02:09:40,510 kecuali ada sesuatu yang dia berkata bagi mereka yang terkemudian yang terperangkap dengan saya. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Ini Adalah CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -Itu Adalah semua orang dipotong, pekerjaan yang besar pada latihan. 2636 02:09:52,190 --> 02:09:53,070 >> makan tengah hari -Itu ini? 2637 02:09:53,070 --> 02:09:54,986 >> -Yeah, Anda dan saya boleh merebut sandwic dalam sedikit. 2638 02:09:54,986 --> 02:09:58,380 Biar saya memberi kata akhir dengan David benar-benar cepat. 2639 02:09:58,380 --> 02:09:59,160 David? 2640 02:09:59,160 --> 02:10:01,260 David? 2641 02:10:01,260 --> 02:10:03,110 >> [AKHIR MAIN SEMULA]