1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. Malan: Jadi ini adalah CS50. 3 00:00:13,800 --> 00:00:18,970 Dan ini adalah CS50 sendiri Colton Ogden, untuk lebih dari siapa musik, Anda dapat 4 00:00:18,970 --> 00:00:22,820 download di soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Jadi hari ini kita fokus semua lebih pada seni pemrograman. 6 00:00:26,690 --> 00:00:28,980 Dan kita mengambil tempat kami tinggalkan off pekan lalu, fokus 7 00:00:28,980 --> 00:00:31,660 pada Scratch, yang ini bahasa pemrograman grafis. 8 00:00:31,660 --> 00:00:35,490 Dan mengambil hal-hal ke tingkat yang lebih rendah, menggunakan pemrograman yang lebih tradisional 9 00:00:35,490 --> 00:00:38,420 bahasa yang dikenal sebagai C. Tapi sepanjang jalan, menyadari 10 00:00:38,420 --> 00:00:40,730 bahwa ide-ide yang sama kita berbicara tentang Jumat lalu 11 00:00:40,730 --> 00:00:44,390 akan kambuh tidak hanya dalam hal ini bahasa C, tetapi dalam banyak setiap lain 12 00:00:44,390 --> 00:00:46,350 bahwa kita melihat semester ini. 13 00:00:46,350 --> 00:00:50,247 >> Jadi kita disebut hal ini di sini apa terakhir kali? 14 00:00:50,247 --> 00:00:51,830 Ini adalah wakil dari sebuah pernyataan. 15 00:00:51,830 --> 00:00:53,080 Jadi kita menyebut pernyataan. 16 00:00:53,080 --> 00:00:54,100 Dan itu sesuatu. 17 00:00:54,100 --> 00:00:56,910 Ini adalah instruksi bahwa komputer atau Scratch mungkin mengeksekusi. 18 00:00:56,910 --> 00:00:59,910 Dan selanjutnya, mari kita juga mulai memanggil sesuatu seperti ini fungsi, 19 00:00:59,910 --> 00:01:02,070 untuk alasan yang akan kita lihat. 20 00:01:02,070 --> 00:01:03,681 >> Sementara itu, kita melihat hal-hal seperti ini. 21 00:01:03,681 --> 00:01:05,680 Dan ini umumnya dikenal sebagai apa membangun? 22 00:01:05,680 --> 00:01:06,240 >> AUDIENCE: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. Malan: Jadi lingkaran. 24 00:01:06,860 --> 00:01:07,943 Jadi cukup sederhana. 25 00:01:07,943 --> 00:01:09,470 Secara harfiah melakukan apa yang tertulis. 26 00:01:09,470 --> 00:01:12,210 Dan di Scratch, jika Anda ingin menjejalkan potongan puzzle lainnya di sana, 27 00:01:12,210 --> 00:01:13,950 potongan akan tumbuh untuk menyesuaikan. 28 00:01:13,950 --> 00:01:16,790 Dan kita akan melihat di C yang kita dapat melakukan hal yang sama. 29 00:01:16,790 --> 00:01:20,000 >> Tipe lain dari lingkaran, meskipun, di Scratch mungkin selamanya, 30 00:01:20,000 --> 00:01:21,820 atau ada sejumlah pendekatan lainnya. 31 00:01:21,820 --> 00:01:24,150 Tapi mari kita lebih Penampilan generalis, dengan wajah 32 00:01:24,150 --> 00:01:27,402 itu mungkin cukup familiar, di loop lebih umum. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Satu hal yang komputer 34 00:01:29,110 --> 00:01:31,860 benar-benar baik adalah mengulangi perintah. 35 00:01:31,860 --> 00:01:33,910 Sebagai seseorang, Anda akan mendapatkan benar-benar bosan jika Anda 36 00:01:33,910 --> 00:01:36,730 harus melakukan hal yang sama banyak kali berturut-turut. 37 00:01:36,730 --> 00:01:40,530 Tapi komputer dapat melakukan hal yang sama jutaan atau bahkan miliaran kali, 38 00:01:40,530 --> 00:01:43,290 dan tidak bosan, dan dapat untuk melakukan itu dengan sangat baik. 39 00:01:43,290 --> 00:01:45,650 >> Jadi misalnya, jika saya ingin berharap semua orang 40 00:01:45,650 --> 00:01:48,840 di Facebook selamat ulang tahun dengan mengirimkan email, 41 00:01:48,840 --> 00:01:51,550 mungkin membawa saya lebih dari satu abad untuk benar-benar menulis 42 00:01:51,550 --> 00:01:53,000 semua email-email kepada semua orang. 43 00:01:53,000 --> 00:01:57,780 Tapi hanya dengan beberapa baris kode, saya bisa memiliki sistem mengirim email ke semua orang 44 00:01:57,780 --> 00:01:59,930 di Facebook yang ingin mereka selamat ulang tahun. 45 00:01:59,930 --> 00:02:02,730 Jadi itulah yang loop dan mengapa mereka berharga dan sesuatu 46 00:02:02,730 --> 00:02:04,740 bahwa komputer dapat melakukannya dengan sangat baik. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. Malan: Jadi, jika Anda sudah penerima 48 00:02:05,630 --> 00:02:07,820 beberapa CS50 dan Ruang Dropbox akhir, 49 00:02:07,820 --> 00:02:10,590 itu sebenarnya tepat apa yang kita dilakukan, menggunakan kode cukup seperti itu. 50 00:02:10,590 --> 00:02:12,600 Kami pada dasarnya memiliki besar spreadsheet mana 51 00:02:12,600 --> 00:02:15,016 orang telah memasukkan mereka nama dan alamat email. 52 00:02:15,016 --> 00:02:18,160 Dan kami menulis sedikit kode yang dapat iterate atas alamat tersebut 53 00:02:18,160 --> 00:02:21,860 dan meludahkan alamat unik di kasus ada yang disampaikan beberapa kali. 54 00:02:21,860 --> 00:02:25,120 Dan setelah itu, kami mengirim otomatis email dari bot CS50 ini, 55 00:02:25,120 --> 00:02:27,190 termasuk kode kupon. 56 00:02:27,190 --> 00:02:29,290 >> Sekarang kami juga melihat ini membangun terakhir kali. 57 00:02:29,290 --> 00:02:33,100 Dan ini adalah khusus contoh dari apa? 58 00:02:33,100 --> 00:02:35,050 Jadi, ya, ekspresi Boolean. 59 00:02:35,050 --> 00:02:37,050 Dan bentuk yang dimaksud untuk menangkap itu juga. 60 00:02:37,050 --> 00:02:39,966 Semua pertanyaan tersebut dari membentuk benar atau salah dalam Scratch 61 00:02:39,966 --> 00:02:41,590 akan terlihat sedikit sesuatu seperti ini. 62 00:02:41,590 --> 00:02:43,200 Dan kami menyebutnya ekspresi Boolean. 63 00:02:43,200 --> 00:02:46,170 Itu memang benar atau salah, ya atau tidak. 64 00:02:46,170 --> 00:02:49,150 Ini adalah cara untuk menjawab pertanyaan. 65 00:02:49,150 --> 00:02:52,420 >> Dan Sementara itu Anda dapat menggunakan Boolean ini ekspresi dalam konstruksi 66 00:02:52,420 --> 00:02:54,720 seperti ini, yang Tentu saja kondisi 67 00:02:54,720 --> 00:02:57,259 atau cabang, pepatah garpu di jalan. 68 00:02:57,259 --> 00:02:59,550 Dan mereka dapat melihat tidak hanya seperti ini, tetapi mereka juga dapat 69 00:02:59,550 --> 00:03:02,080 telah elses terkait dengan mereka. 70 00:03:02,080 --> 00:03:05,820 Dan Anda benar-benar dapat memiliki tiga cara pertigaan jalan atau empat cara garpu 71 00:03:05,820 --> 00:03:08,340 di jalan, hanya dengan bersarang hal-hal ini, 72 00:03:08,340 --> 00:03:10,510 seperti yang akan Anda lihat dalam Scratch jika Anda belum melakukannya. 73 00:03:10,510 --> 00:03:13,550 Dan seperti yang Anda lakukan di C juga. 74 00:03:13,550 --> 00:03:16,810 >> Mari kita generalis lain melihat sebuah alumnist, juga, yang 75 00:03:16,810 --> 00:03:21,490 mungkin menyajikan pendekatan yang berbeda untuk hal-hal ini disebut kondisi. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: Orang-orang membuat keputusan setiap hari. 77 00:03:24,060 --> 00:03:27,530 Misalnya, sebelum Anda pergi di luar Anda jenis memiliki jika pernyataan yang mengatakan, 78 00:03:27,530 --> 00:03:31,480 jika hujan maka saya perlu mendapatkan jaket saya. 79 00:03:31,480 --> 00:03:36,820 Dan komputer menakjubkan setelah Anda memutuskan orang-orang macam laporan, 80 00:03:36,820 --> 00:03:42,280 bahwa mereka dipercaya bisa mengeksekusi hal-hal dengan kecepatan luar biasa. 81 00:03:42,280 --> 00:03:48,240 Jadi program komputer yang benar-benar adalah sedikit matematika dan beberapa 82 00:03:48,240 --> 00:03:53,050 jika pernyataan di mana keputusan akan dibuat. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. Malan: Jadi Anda mungkin tahu, itu 84 00:03:55,020 --> 00:03:57,880 orang-orang seperti Bill Gates, Paul Allen, dan lain-lain 85 00:03:57,880 --> 00:04:00,240 yang benar-benar menggebrak disebut komputer pribadi 86 00:04:00,240 --> 00:04:01,990 revolusi beberapa tahun yang lalu. 87 00:04:01,990 --> 00:04:04,140 Saya pikir, sebelum kita menyelam ke dalam beberapa administrivia, 88 00:04:04,140 --> 00:04:09,920 kita akan berhubungan dongeng dari Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 dan ilmu di mana beberapa Bill Gates ' dan cerita Paul Allen awal 90 00:04:13,650 --> 00:04:17,470 yang menceritakan bagaimana kita miliki sekarang PC saat ini dan Mac dan banyak lagi. 91 00:04:17,470 --> 00:04:22,390 Untuk ini, meskipun, kita perlu dua relawan yang memiliki suara narasi yang sangat baik 92 00:04:22,390 --> 00:04:23,735 untuk membaca naskah keras. 93 00:04:23,735 --> 00:04:25,530 >> Baiklah, bagaimana dengan di belakang sana. 94 00:04:25,530 --> 00:04:26,120 Ayo up. 95 00:04:26,120 --> 00:04:27,770 Dan bagaimana dengan di depan sini. 96 00:04:27,770 --> 00:04:28,340 Ayo ke bawah. 97 00:04:28,340 --> 00:04:29,600 Mengambil tempat di sini. 98 00:04:29,600 --> 00:04:32,444 Seperti kalian datang, pasangan pengumuman administrasi. 99 00:04:32,444 --> 00:04:34,360 sectioning, proses memilih bagian, 100 00:04:34,360 --> 00:04:36,068 akan memulai ini Rabu sampai Jumat. 101 00:04:36,068 --> 00:04:38,400 Lagi di mendatang Rabu dalam perkuliahan. 102 00:04:38,400 --> 00:04:41,770 >> Bagian Super, sementara itu, sesuatu yang kami tawarkan minggu depan 103 00:04:41,770 --> 00:04:45,310 dimana seluruh kelas diundang untuk berpartisipasi dalam skala yang cukup besar 104 00:04:45,310 --> 00:04:47,690 bagian, satu lebih nyaman, satu kurang nyaman. 105 00:04:47,690 --> 00:04:51,340 Dan kami akan mengumumkan ihwal itu, juga, akhir pekan ini. 106 00:04:51,340 --> 00:04:53,310 >> Bagian Sementara itu, sendiri, akan mulai 107 00:04:53,310 --> 00:04:57,241 di minggu ketiga tentu saja, indeks nol, yang berarti mereka adalah beberapa minggu 108 00:04:57,241 --> 00:04:57,740 out. 109 00:04:57,740 --> 00:04:58,450 Jadi tidak perlu khawatir. 110 00:04:58,450 --> 00:05:01,014 Anda belum terjawab sesuatu sepanjang garis itu. 111 00:05:01,014 --> 00:05:03,930 Sementara itu sementara itu, jika Anda memiliki pertanyaan administratif, 112 00:05:03,930 --> 00:05:08,120 email saya dan Devon dan Gabe dan Rob di alamat ini di sini. 113 00:05:08,120 --> 00:05:10,320 >> Terakhir, permasalahan yang 0 adalah, tentu saja, keluar. 114 00:05:10,320 --> 00:05:12,320 Anda mungkin telah memperhatikan itu di website program ini. 115 00:05:12,320 --> 00:05:14,840 Ini harus menyediakan Anda dengan semua jawaban atas pertanyaan 116 00:05:14,840 --> 00:05:18,250 Anda mungkin memiliki sepanjang jalan untuk memulai dengan set masalah. 117 00:05:18,250 --> 00:05:21,430 Tetapi jika Anda menemukan diri Anda membutuhkan uluran tangan, 118 00:05:21,430 --> 00:05:25,020 dengan segala cara menghadiri jam kantor, Senin, Selasa, Rabu, Kamis 119 00:05:25,020 --> 00:05:27,290 minggu ini di malam hari dalam empat ruang makan. 120 00:05:27,290 --> 00:05:31,650 Lihat URL yang ada untuk keterangan dari mana jam kantor akan. 121 00:05:31,650 --> 00:05:34,000 >> Sekarang Mari kita bertemu kami dua tamu di sini hari ini. 122 00:05:34,000 --> 00:05:34,740 Siapa nama Anda? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. Malan: Jay Paul, senang bertemu Anda. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. Malan: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. Malan: Hikari. 129 00:05:38,810 --> 00:05:39,790 Senang bertemu Anda juga. 130 00:05:39,790 --> 00:05:42,123 Jay Paul dan Hikari ada di depan mereka pada musik ini 131 00:05:42,123 --> 00:05:45,100 berdiri dua script yang saya cetak pagi ini dari New Mexico 132 00:05:45,100 --> 00:05:46,692 Museum Sejarah Alam dan Sains. 133 00:05:46,692 --> 00:05:48,400 Dan apa yang saya pikir Aku akan lakukan pada biaya overhead 134 00:05:48,400 --> 00:05:52,830 adalah menemani pembacaan Anda script dan sejarah ini 135 00:05:52,830 --> 00:05:54,700 dengan beberapa gambar visual, tidak ada kejutan. 136 00:05:54,700 --> 00:05:57,512 >> Dan apa yang telah saya lakukan di muka adalah prehighlight pada naskah Anda 137 00:05:57,512 --> 00:05:59,470 apa yang harus Anda baca, dan apa yang harus Anda baca. 138 00:05:59,470 --> 00:06:00,920 Dan kita pada dasarnya akan paragraf hanya alternatif. 139 00:06:00,920 --> 00:06:03,211 Jadi seperti Anda mungkin telah dilakukan di kelas bahasa Inggris. 140 00:06:03,211 --> 00:06:06,875 Itu benar-benar memaksa penonton percaya pada kisah Anda di sini. 141 00:06:06,875 --> 00:06:07,600 Apakah kita? 142 00:06:07,600 --> 00:06:13,272 Jadi cerita di sini adalah, kita memiliki BASIC, dan itu dimulai di Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Saat itu musim dingin, 1974, di Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 di mana musim dingin bisa dingin. 145 00:06:20,240 --> 00:06:22,800 A berjenggot, berambut panjang perguruan tinggi putus sekolah bernama 146 00:06:22,800 --> 00:06:27,280 Paul Allen drudging di Harvard Square, tenggelam dalam pikirannya. 147 00:06:27,280 --> 00:06:31,050 Keasyikan utamanya pada hari-hari adalah bagaimana untuk mendapatkan temannya, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 untuk berhenti sekolah dan pergi ke bisnis dengan dia. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Dua sudah pergi melalui sejumlah usaha bisnis 150 00:06:37,890 --> 00:06:40,850 bersama-sama, mulai dari Lakeside sekolah di Seattle di mana 151 00:06:40,850 --> 00:06:45,220 mereka dibayar dalam waktu komputer gratis untuk menguji komputer PDP-10 pada waktu setempat 152 00:06:45,220 --> 00:06:46,580 berbagi perusahaan. 153 00:06:46,580 --> 00:06:50,930 Rencana terbaru telah berhenti sekolah dan membentuk sebuah perusahaan perangkat lunak. 154 00:06:50,930 --> 00:06:53,440 Allen telah meninggalkan Washington Universitas Negeri. 155 00:06:53,440 --> 00:06:58,380 Namun pada menit terakhir, Gates memutuskan untuk tetap dengan Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Hari itu, melintasi Harvard Square, Allen melihat Januari, 157 00:07:02,080 --> 00:07:07,530 Edisi 1975 Popular Electronics dengan judul berhenti bumi, 158 00:07:07,530 --> 00:07:11,900 Pertama komputer mini Kit dunia untuk Rival Commercial Models. 159 00:07:11,900 --> 00:07:14,430 Di bawah judul itu gambar sebuah kotak kecil 160 00:07:14,430 --> 00:07:16,160 dihiasi dengan lampu dan switch. 161 00:07:16,160 --> 00:07:19,770 Itu disebut MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 Dan Allen tahu ini adalah apa yang ia telah mencari-cari. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Days diskusi diikuti. 164 00:07:26,350 --> 00:07:30,170 Allen dan Gates memahami signifikansi Altair. 165 00:07:30,170 --> 00:07:32,480 Mereka sering membicarakan tentang mikroprosesor 166 00:07:32,480 --> 00:07:35,250 dan sedang menunggu untuk melihat apa akan dilakukan dengan mereka. 167 00:07:35,250 --> 00:07:39,770 Sekarang ada kit komputer mini pada penutup Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Ini rupanya punya software belum. 169 00:07:42,830 --> 00:07:46,830 Mereka membayangkan bangsa programmer turun pada MITS. 170 00:07:46,830 --> 00:07:49,590 Dan sehingga mereka disebut Ed Roberts, kepala perusahaan, 171 00:07:49,590 --> 00:07:53,330 mengaku memiliki versi Bahasa pemrograman BASIC hampir siap 172 00:07:53,330 --> 00:07:54,710 untuk Altair. 173 00:07:54,710 --> 00:07:55,570 Mereka tidak. 174 00:07:55,570 --> 00:07:58,910 Dan Roberts pasti tahu mereka tidak. 175 00:07:58,910 --> 00:08:03,170 Dia mendapatkan 10 panggilan per hari dari orang-orang yang memiliki BASIC yang hampir siap. 176 00:08:03,170 --> 00:08:05,570 Dan respon sahamnya adalah, "Orang pertama 177 00:08:05,570 --> 00:08:11,090 siapa yang muncul dengan kerja yang BASIC mendapat kontrak. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates dan Allen belum pernah melihat Altair. 179 00:08:13,910 --> 00:08:17,600 Mereka belum pernah melihat Intel 8080 mikroprosesor 180 00:08:17,600 --> 00:08:19,060 di jantung Altair. 181 00:08:19,060 --> 00:08:21,470 Tapi beberapa tahun sebelumnya Allen telah menulis sebuah program 182 00:08:21,470 --> 00:08:25,220 pada komputer mainframe yang ditiru pengoperasian Intel sebelumnya 183 00:08:25,220 --> 00:08:26,217 mikroprosesor. 184 00:08:26,217 --> 00:08:28,300 Dan kali ini mereka akan melakukan hal yang sama. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Dengan Intel 8080 panduan di sisinya, 187 00:08:34,380 --> 00:08:37,770 Allen duduk di Komputer Harvard PDP-10 188 00:08:37,770 --> 00:08:42,010 dan menulis emulator dan perangkat lunak alat yang diperlukan untuk melakukan pemrograman. 189 00:08:42,010 --> 00:08:45,820 Sementara Gates akan berhenti ke kelas dan mengabdikan dirinya 190 00:08:45,820 --> 00:08:48,120 untuk merancang BASIC, menggunakan setiap trik 191 00:08:48,120 --> 00:08:53,130 ia tahu untuk mendapatkan ukuran di bawah 4 kilobyte. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out di Albuquerque, Ed Roberts mendapat telepon dari Gates 193 00:08:55,870 --> 00:08:59,754 meminta rincian tentang bagaimana Altair ditangani rutinitas tertentu. 194 00:08:59,754 --> 00:09:01,170 Tidak ada yang pernah meminta itu sebelumnya. 195 00:09:01,170 --> 00:09:02,670 Dan Roberts mulai tertarik. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Dengan pengembangan alat dan desain siap, 198 00:09:07,970 --> 00:09:10,780 Gates dan Allen menulis kode pada PDP-10, 199 00:09:10,780 --> 00:09:16,060 mendaftar mahasiswa Harvard lain, Monte Davidoff, menulis rutinitas matematika. 200 00:09:16,060 --> 00:09:19,450 Setelah malam final pemrograman, Allen naik pesawat 201 00:09:19,450 --> 00:09:22,970 untuk memberikan mereka BASIC untuk MITS. 202 00:09:22,970 --> 00:09:25,800 Ia menghabiskan pesawat naik keluar mengkhawatirkan. 203 00:09:25,800 --> 00:09:28,490 Dan kembali Cambridge Gates khawatir. 204 00:09:28,490 --> 00:09:32,100 Mereka telah diuji mereka BASIC dan itu bekerja pada emulator. 205 00:09:32,100 --> 00:09:35,444 Tapi bagaimana kalau emulator itu salah? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Saat pesawat mendekati Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen menyadari bahwa mereka BASIC, sekarang rapi terkandung 208 00:09:40,070 --> 00:09:42,460 pada roll kecil menekan kertas pita, akan 209 00:09:42,460 --> 00:09:44,970 menjadi sia-sia tanpa terpisah Program, yang disebut loader, yang 210 00:09:44,970 --> 00:09:47,550 akan memberitahu Altair bagaimana untuk membaca pita kertas makhluk 211 00:09:47,550 --> 00:09:49,620 dimasukkan ke dalam mesin teletype. 212 00:09:49,620 --> 00:09:52,970 Dia mengambil buku catatannya dan cepat menuliskan program loader 213 00:09:52,970 --> 00:09:56,819 dalam bahasa Assembly, kemudian secara manual diterjemahkan bahwa ke 1 dan 0 214 00:09:56,819 --> 00:09:57,985 Altair akan mengerti. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen mengharapkan bersih, sedikit, perusahaan teknologi tinggi 217 00:10:03,830 --> 00:10:05,470 dijalankan oleh pria dalam setelan bisnis. 218 00:10:05,470 --> 00:10:09,210 Jadi dia terkejut ketika Roberts bertemu dia di bandara tampak seperti sebuah peternakan 219 00:10:09,210 --> 00:10:10,270 tangan. 220 00:10:10,270 --> 00:10:12,070 Roberts juga terkejut. 221 00:10:12,070 --> 00:10:16,340 Ketika ia menjatuhkan Harvard programmer di hotel yang mahal, 222 00:10:16,340 --> 00:10:20,790 Allen harus mengakui bahwa ia tidak mampu ruangan. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, itu sendiri, adalah terletak di mal berdebu. 224 00:10:24,510 --> 00:10:27,040 Di dalam pada berantakan meja kerja adalah Altair 225 00:10:27,040 --> 00:10:30,390 dimuat dengan 5 kilobyte memori dan dihubungkan dengan kabel 226 00:10:30,390 --> 00:10:32,030 ke mesin teletype. 227 00:10:32,030 --> 00:10:37,200 Roberts dan Chief Engineer, Bill Yates, menunggu dengan penuh harap 228 00:10:37,200 --> 00:10:40,660 sebagai Allen toggle loader nya program ke Altair. 229 00:10:40,660 --> 00:10:44,980 Teletype mulai menenggak karena ditarik pita kertas melalui pembaca pita. 230 00:10:44,980 --> 00:10:47,215 Butuh waktu mungkin 15 menit memuat program. 231 00:10:47,215 --> 00:10:52,110 Kemudian teletype tiba-tiba dicetak memori yang cepat, maka prompt siap, 232 00:10:52,110 --> 00:10:55,340 dan Allen mulai mengetik beberapa tes perintah. 233 00:10:55,340 --> 00:10:57,400 Untuk takjub semua orang, perangkat lunak bekerja. 234 00:10:57,400 --> 00:10:58,525 Ada bug, tentu saja. 235 00:10:58,525 --> 00:11:02,070 Tapi hal utama adalah bekerja. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Kemudian, dalam perjalanan mereka ke $ 3,00 makan siang di Pancho ini, tawon terbang 237 00:11:06,570 --> 00:11:10,470 di jendela pickup truk dan menyengat Allen di lengan. 238 00:11:10,470 --> 00:11:13,070 Tapi pada saat itu tidak ada bisa merusak mood. 239 00:11:13,070 --> 00:11:17,210 The Altair sekarang memiliki nya BASIC, yang software komersial pertama untuk rumah 240 00:11:17,210 --> 00:11:23,260 komputer, yang dibuat oleh Paul Allen dan Bill Gates, melakukan bisnis seperti Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. Malan: Banyak berkat dua pembaca kami. 242 00:11:25,336 --> 00:11:30,690 >> [Tepuk Tangan] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. Malan: Sekarang Anda memiliki pilihan Anda, 244 00:11:32,520 --> 00:11:35,880 sebelum Anda meninggalkan, dari gemerlapan atau cahaya di dark-- oh, 245 00:11:35,880 --> 00:11:40,810 tunggu satu detik, wait-- gemerlapan dan cahaya dalam gelap gajah 246 00:11:40,810 --> 00:11:42,534 dari CS50 sendiri Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, terima kasih. 248 00:11:43,450 --> 00:11:45,324 DAVID J. Malan: Semua benar, terima kasih banyak. 249 00:11:45,324 --> 00:11:49,855 [Tepuk Tangan] 250 00:11:49,855 --> 00:11:51,105 DAVID J. Malan: Kisah Jadi benar. 251 00:11:51,105 --> 00:11:54,380 Hal ini untuk mengatakan bahwa semua ini mesin dan kemudahan yang kita 252 00:11:54,380 --> 00:11:56,270 menggunakannya sekarang dan mengambil begitu saja, benar-benar 253 00:11:56,270 --> 00:12:00,070 mulai di sini, hanya beberapa langkah dari teater yang sebenarnya ini. 254 00:12:00,070 --> 00:12:03,930 Dan sekarang hari ini, jika Anda sudah tidak, ini adalah Maxwell Dworkin, komputer 255 00:12:03,930 --> 00:12:05,810 bangunan ilmu, juga di sudut. 256 00:12:05,810 --> 00:12:09,760 Dan di lantai dua ini bangunan tidak menggantung tiga halaman 257 00:12:09,760 --> 00:12:12,740 dari kode sumber asli yang Bill Gates dan Paul Allen menulis. 258 00:12:12,740 --> 00:12:14,770 Bahkan, jika menggunakan Anda tampilannya di Anda dapat melihat tidak hanya 259 00:12:14,770 --> 00:12:17,350 nama mereka dalam Jenis asli, tetapi juga 260 00:12:17,350 --> 00:12:22,100 tanda tangan mereka bahwa mereka menghiasi beberapa tahun yang lalu ketika mereka terakhir dikunjungi. 261 00:12:22,100 --> 00:12:25,800 >> Tapi apa yang sangat menarik tentang hal ini adalah apa yang mereka mulai lakukan 262 00:12:25,800 --> 00:12:29,760 adalah untuk menulis sebuah program yang akan memungkinkan orang lain untuk menulis 263 00:12:29,760 --> 00:12:30,950 program mereka sendiri. 264 00:12:30,950 --> 00:12:34,280 Pada saat itu semua ada dengan mesin Altair ini dibuat oleh MITS. 265 00:12:34,280 --> 00:12:40,020 Dan semua yang mereka butuhkan adalah beberapa cara sehingga mudah untuk penggemar dan orang-orang 266 00:12:40,020 --> 00:12:45,300 seperti kita di ruangan ini untuk benar-benar program yang bahwa tanpa harus memahami 267 00:12:45,300 --> 00:12:49,060 Assembly, atau mesin kode, atau Tuhan melarang, 0 dan 1. 268 00:12:49,060 --> 00:12:51,190 Kami programer, seperti mereka di ruangan ini, kami 269 00:12:51,190 --> 00:12:54,070 ingin dapat mengekspresikan diri lebih seperti pseudo code 270 00:12:54,070 --> 00:12:57,330 bahkan jika itu sedikit lebih nit pemilih daripada kita berbicara minggu lalu. 271 00:12:57,330 --> 00:13:00,970 Kami tidak ingin menulis kode seperti ini, yang Paul Allen dan Bill Gates lakukan. 272 00:13:00,970 --> 00:13:04,850 Kami, sebaliknya, ingin menulis kode yang terlihat sedikit lebih user friendly. 273 00:13:04,850 --> 00:13:07,150 >> Sekarang ini adalah bahasa yang dikenal sebagai BASIC. 274 00:13:07,150 --> 00:13:11,497 Dan nomor baris ada apa yang Anda gunakan untuk hanya nomor baris kode 275 00:13:11,497 --> 00:13:12,330 bahwa Anda sedang menulis. 276 00:13:12,330 --> 00:13:14,038 Kami bahkan tidak perlu melakukan itu hari ini. 277 00:13:14,038 --> 00:13:16,060 Tapi Anda bisa lihat di sini bagaimana PRINT "Halo, dunia" 278 00:13:16,060 --> 00:13:18,660 akan memang mungkin mencetak hanya itu. 279 00:13:18,660 --> 00:13:22,710 Dan jadi apa Bill dan Paul lakukan adalah memberdayakan orang untuk menulis kode seperti ini 280 00:13:22,710 --> 00:13:27,240 bukan of-- jika anda melihat pada ilmu komputer wall-- kode seperti ini. 281 00:13:27,240 --> 00:13:29,290 >> Bahkan, baru-baru CS50 memiliki kesempatan 282 00:13:29,290 --> 00:13:32,540 duduk dengan Profesor Harry Lewis di Ilmu Komputer departemen, yang 283 00:13:32,540 --> 00:13:34,640 benar-benar mengajarkan Bill Gates beberapa tahun yang lalu, 284 00:13:34,640 --> 00:13:38,460 dan berdiri di sini sebelum tiga halaman kutipan. 285 00:13:38,460 --> 00:13:39,560 Mari kita lihat. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Apa yang Anda miliki di sini adalah daftar sepotong awal software 287 00:13:45,520 --> 00:13:50,240 ditulis oleh Bill Gates dan Paul Allen, pendiri Microsoft. 288 00:13:50,240 --> 00:13:52,570 Jadi kode menarik karena dua alasan. 289 00:13:52,570 --> 00:13:55,480 Pertama-tama, itu menjadi Produk pertama Microsoft, 290 00:13:55,480 --> 00:14:01,810 yang seorang juru bahasa untuk bahasa pemrograman BASIC. 291 00:14:01,810 --> 00:14:04,940 Dan kedua, ini adalah salah satu upaya pertama 292 00:14:04,940 --> 00:14:10,580 untuk menciptakan seorang juru begitu biasa orang bisa menggunakan komputer pribadi. 293 00:14:10,580 --> 00:14:12,670 >> Jadi Bill Gates adalah sarjana di Harvard. 294 00:14:12,670 --> 00:14:14,820 Saya mulai mengajar di Harvard pada tahun 1974. 295 00:14:14,820 --> 00:14:16,560 Hal ini dilakukan pada tahun 1975. 296 00:14:16,560 --> 00:14:20,180 Jadi itu awal karirnya dan awal karir saya. 297 00:14:20,180 --> 00:14:23,790 Aku benar-benar mengajar Bill di kursus sekitar waktu ini. 298 00:14:23,790 --> 00:14:27,130 Paul Allen bukanlah Harvard mahasiswa, tapi dia 299 00:14:27,130 --> 00:14:31,020 telah menjadi sekolah tinggi sekelas Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Jika Anda datang dan melihat di daftar, Anda akan 301 00:14:33,740 --> 00:14:36,230 benar-benar menemukan sepertiga Nama, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 yang sekelas Gates di sini di Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, jadi inilah yang menarik komentar di sini. 304 00:14:41,340 --> 00:14:47,150 Ia mengatakan "Di 4K dapat menghapus akar kuadrat tapi untuk loop harus tetap bekerja. " 305 00:14:47,150 --> 00:14:53,080 OK, jadi apa itu artinya bahwa ada dua cara untuk mengkompilasi program ini. 306 00:14:53,080 --> 00:14:57,860 Salah satunya adalah untuk berjalan pada versi komputer Altair ini 307 00:14:57,860 --> 00:15:04,310 yang hanya memiliki 4K kata-kata memori, 4,096 kata memori. 308 00:15:04,310 --> 00:15:07,050 Tapi versi besar memiliki 8K. 309 00:15:07,050 --> 00:15:09,770 Dan jadi apa ini, dapat dikatakan bahwa dalam versi 4K 310 00:15:09,770 --> 00:15:12,770 Anda harus menghapus beberapa kode untuk membuatnya fit. 311 00:15:12,770 --> 00:15:14,790 Dan salah satu hal yang akan dihapus 312 00:15:14,790 --> 00:15:16,290 akan menjadi rutinitas akar kuadrat. 313 00:15:16,290 --> 00:15:20,360 Tapi rupanya untuk loop harus tetap 314 00:15:20,360 --> 00:15:26,392 bekerja bahkan ketika Anda kompilasi bawah hanya versi 4K komputer. 315 00:15:26,392 --> 00:15:29,350 DAVID J. Malan: Jadi salah satu tema, seperti yang akan kita lihat dalam ilmu komputer, 316 00:15:29,350 --> 00:15:31,430 adalah gagasan dari layering dan abstraksi, 317 00:15:31,430 --> 00:15:34,670 dan benar-benar berdiri di bahu orang-orang yang datang sebelum kita, tidak 318 00:15:34,670 --> 00:15:37,890 tidak seperti beberapa Bill Gates dan Paul Allen narasi sini. 319 00:15:37,890 --> 00:15:40,080 Dan apa ini berarti bahwa hari ini kita dapat mengambil untuk 320 00:15:40,080 --> 00:15:43,490 saja bahwa hal-hal yang benar-benar mudah bagi kita untuk menulis kode. 321 00:15:43,490 --> 00:15:47,170 Memang kode, seperti yang kita katakan pada hari Jumat, adalah secara teknis dikenal sebagai kode sumber. 322 00:15:47,170 --> 00:15:52,210 Dan itu bahasa Inggris ini seperti sintaks yang lebih tepat dan didefinisikan lebih baik 323 00:15:52,210 --> 00:15:55,480 daripada sesuatu seperti pseudo code, untuk yang tidak ada definisi formal. 324 00:15:55,480 --> 00:15:58,320 >> Dan hari ini apa kita akan untuk fokus pada kode sumber 325 00:15:58,320 --> 00:16:01,010 yang terlihat seperti ini, yang diakui pada pandangan pertama 326 00:16:01,010 --> 00:16:02,690 tampak benar-benar samar. 327 00:16:02,690 --> 00:16:08,540 Dan terus terang, itu cara yang lebih estetis kompleks daripada program yang mendasari. 328 00:16:08,540 --> 00:16:13,300 Semua program ini tidak, ingat, adalah apa yang kita katakan? 329 00:16:13,300 --> 00:16:14,990 Itu hanya mencetak "hello world." 330 00:16:14,990 --> 00:16:19,600 Namun melihat semua hal-hal yang kita butuhkan untuk membungkus itu ungkapan yang sangat sederhana. 331 00:16:19,600 --> 00:16:21,750 Tapi tak lama semua garis-garis ini dan lebih 332 00:16:21,750 --> 00:16:24,800 akan masuk akal jauh lebih baik untuk Anda. 333 00:16:24,800 --> 00:16:26,940 >> Dan aliran adalah sebagai berikut. 334 00:16:26,940 --> 00:16:31,220 Apa yang kita butuhkan kita miliki adalah untuk mengambil kode, seperti sumber 335 00:16:31,220 --> 00:16:32,340 kode yang baru saja kita lihat. 336 00:16:32,340 --> 00:16:35,060 Dan kita membutuhkan sebuah program baru menjalankannya melalui. 337 00:16:35,060 --> 00:16:39,130 Kita perlu algoritma yang dapat mengkonversi kode sumber, seperti ini, 338 00:16:39,130 --> 00:16:41,932 ke dalam kode obyek, 0 dan 1. 339 00:16:41,932 --> 00:16:43,890 Dengan kata lain, apa yang kita akan pelajari hari ini 340 00:16:43,890 --> 00:16:46,620 adalah bagaimana untuk melakukan hal ini, menulis source code di bagian atas, 341 00:16:46,620 --> 00:16:49,930 lulus sebagai masukan untuk khusus Program yang dikenal sebagai compiler, 342 00:16:49,930 --> 00:16:52,140 dan kita akan menghasilkan kode obyek. 343 00:16:52,140 --> 00:16:54,600 Yang hanya cara mewah mengatakan kita akan mengambil sesuatu 344 00:16:54,600 --> 00:16:58,350 yang terlihat seperti ini, lulus menjadi sebuah program yang disebut compiler, 345 00:16:58,350 --> 00:17:01,210 menghasilkan kode objek yang terlihat seperti ini. 346 00:17:01,210 --> 00:17:04,720 >> Jadi ini benar-benar pola 0s dan 1s 347 00:17:04,720 --> 00:17:08,550 yang dipahami oleh Komputer Intel hari ini, 348 00:17:08,550 --> 00:17:12,480 bahwa jika diinterpretasikan oleh CPU, otak dalam komputer, 349 00:17:12,480 --> 00:17:16,130 akan benar-benar mencetak, cukup sederhana, "hello world." 350 00:17:16,130 --> 00:17:19,670 Sekarang ada cara yang lebih 0s dan 1s dari Anda berharap mungkin diperlukan untuk itu. 351 00:17:19,670 --> 00:17:22,520 Tapi itu karena kita sedang membangun pada banyak kompleksitas 352 00:17:22,520 --> 00:17:24,270 bahwa kita selanjutnya dapat mengambil untuk diberikan. 353 00:17:24,270 --> 00:17:27,869 Dengan kata lain, banyak orang pintar telah memberikan kita banyak alat keren 354 00:17:27,869 --> 00:17:32,480 dan perangkat lunak yang kuat yang kita sekarang dapat membuat proyek-proyek kita sendiri. 355 00:17:32,480 --> 00:17:33,400 >> Jadi mari kita mulai. 356 00:17:33,400 --> 00:17:36,640 Sedangkan Jumat lalu, dan untuk Masalah Set 0 minggu ini, 357 00:17:36,640 --> 00:17:39,000 Anda akan bermain dalam dunia yang terlihat seperti ini. 358 00:17:39,000 --> 00:17:42,180 Mulai hari ini dan untuk Masalah Set 1 minggu depan, kode 359 00:17:42,180 --> 00:17:45,410 akan terlihat sedikit lebih samar, tetapi secara fungsional adalah 360 00:17:45,410 --> 00:17:46,940 akan menjadi sama. 361 00:17:46,940 --> 00:17:50,770 Jadi pemberitahuan, atas adalah Scratch, bawah adalah C. Terus terang Scratch 362 00:17:50,770 --> 00:17:52,780 lebih banyak pengguna ramah dan mudah diakses. 363 00:17:52,780 --> 00:17:56,890 Tetapi jika Anda sekarang membandingkan secara visual atas ke bawah, ada semacam 00:59 364 00:17:56,890 --> 00:17:59,690 korespondensi antara potongan puzzle dan bahasa 365 00:17:59,690 --> 00:18:00,870 kami tidak akan bermain dengan. 366 00:18:00,870 --> 00:18:04,420 Secara khusus, mengatakan, puzzle biru sepotong bagian atas, 367 00:18:04,420 --> 00:18:08,370 tampaknya setara dengan apa kata kunci atau frase khusus dalam bahasa ini 368 00:18:08,370 --> 00:18:09,062 disebut C? 369 00:18:09,062 --> 00:18:09,770 AUDIENCE: printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. Malan: printf. 371 00:18:10,728 --> 00:18:12,140 Itu berarti pencetakan diformat. 372 00:18:12,140 --> 00:18:15,240 Dan itu hanya suka cara untuk mengatakan printf di C 373 00:18:15,240 --> 00:18:18,615 akan menjadi pernyataan atau fungsi yang mencetak sesuatu ke layar. 374 00:18:18,615 --> 00:18:19,990 Apa mencetak ke layar? 375 00:18:19,990 --> 00:18:23,627 Apa pun yang Anda kirim ke dalam kutipan, di dalam tanda kurung. 376 00:18:23,627 --> 00:18:25,460 Jadi sekali lagi, harus diakui, ada banyak hal 377 00:18:25,460 --> 00:18:27,990 bahwa Anda harus diingat, kurung, tanda kutip, titik koma, 378 00:18:27,990 --> 00:18:28,656 dan semua ini. 379 00:18:28,656 --> 00:18:30,600 Namun semua itu adalah semacam dari intinya. 380 00:18:30,600 --> 00:18:33,660 The takeaway menarik untuk saat ini adalah bahwa blok suara dalam Scratch 381 00:18:33,660 --> 00:18:37,520 cukup banyak setara dengan pernyataan printf di C. 382 00:18:37,520 --> 00:18:41,390 >> Sementara itu, potongan puzzle kuning di bagian atas, ketika bendera hijau diklik, 383 00:18:41,390 --> 00:18:44,736 mungkin setara apa kata kunci di sini? 384 00:18:44,736 --> 00:18:45,360 AUDIENCE: Main. 385 00:18:45,360 --> 00:18:46,359 DAVID J. Malan: Jadi utama. 386 00:18:46,359 --> 00:18:47,410 Mungkin int, mungkin tidak berlaku. 387 00:18:47,410 --> 00:18:51,280 Tapi jenis utama suara seperti penting, dan memang itu. 388 00:18:51,280 --> 00:18:54,080 Jadi ketika bendera hijau diklik adalah, sekali lagi, potongan puzzle 389 00:18:54,080 --> 00:18:56,390 yang kicks off seluruh program Scratch. 390 00:18:56,390 --> 00:19:02,140 Tapi kita akan sekarang mulai menelepon yang utama, fungsi ini dikenal sebagai utama. 391 00:19:02,140 --> 00:19:06,410 >> Sekarang sementara kita akan generalisasi ini sebagai berikut. 392 00:19:06,410 --> 00:19:08,780 Kita sebut mengatakan fungsi. 393 00:19:08,780 --> 00:19:10,580 Dan mungkin terlihat khusus seperti ini. 394 00:19:10,580 --> 00:19:11,770 Nah, bagaimana dengan loop? 395 00:19:11,770 --> 00:19:16,540 Jika kita ingin memulai mengubah atau menerjemahkan lebih Scratch ke C, 396 00:19:16,540 --> 00:19:19,400 hal ini di sini tampaknya hanya mengatakan "hello world" selamanya. 397 00:19:19,400 --> 00:19:23,060 Jadi jika Anda mengasosiasikan ini script dengan kucing di Scratch, 398 00:19:23,060 --> 00:19:26,560 itu hanya akan terus mengatakan dalam beberapa jenis gelembung kartun, 399 00:19:26,560 --> 00:19:29,922 "Hello world, hello world, halo dunia, "nauseum iklan, selamanya. 400 00:19:29,922 --> 00:19:33,130 Jika kita ingin melakukan sesuatu yang serupa di C, itu akan terlihat sedikit samar. 401 00:19:33,130 --> 00:19:35,463 Tapi kita bisa mencapai hal yang sama hasil, seperti yang akan kita akhirnya 402 00:19:35,463 --> 00:19:36,861 cari tahu, dengan sintaks seperti ini. 403 00:19:36,861 --> 00:19:39,360 Aku akan menggunakan printf lagi, karena pada akhir hari 404 00:19:39,360 --> 00:19:42,040 Saya ingin mencetak "hello world." 405 00:19:42,040 --> 00:19:45,610 Dan aku tampaknya menggunakan kata kunci yang tidak selamanya. 406 00:19:45,610 --> 00:19:47,320 Ini bukan kata sementara. 407 00:19:47,320 --> 00:19:49,650 Tapi semantik di Inggris, sementara jenis 408 00:19:49,650 --> 00:19:52,120 menyarankan beberapa jenis lingkaran atau siklus. 409 00:19:52,120 --> 00:19:55,070 >> Sehingga terjadi menjadi kata kunci yang menggunakan C. 410 00:19:55,070 --> 00:20:00,700 Dan sementara benar, mengapa saat benar efektif berarti selamanya? 411 00:20:00,700 --> 00:20:04,240 Nah, sementara, karena kita akan segera menghargai semua lebih, 412 00:20:04,240 --> 00:20:08,140 memiliki sisipan ini sebelahnya di mana Anda dapat menempatkan sebuah ekspresi Boolean. 413 00:20:08,140 --> 00:20:11,360 Dan selama itu ekspresi benar, kode ini, 414 00:20:11,360 --> 00:20:14,750 seperti yang ditunjukkan antara kedua kurung kurawal karena kami akan memanggil mereka, 415 00:20:14,750 --> 00:20:16,880 hanya akan tetap berjalan lagi dan lagi. 416 00:20:16,880 --> 00:20:18,410 >> Jadi yang benar adalah benar. 417 00:20:18,410 --> 00:20:20,900 Jadi sementara cara yang benar hanya melakukan ini selamanya. 418 00:20:20,900 --> 00:20:23,480 Ini hampir bodoh membangun untuk mengekspresikan diri. 419 00:20:23,480 --> 00:20:26,590 Tapi tidak ada selamanya kata kunci dalam C. Ada sementara. 420 00:20:26,590 --> 00:20:29,390 Dan ada yang sangat sederhana Ekspresi Boolean seperti benar. 421 00:20:29,390 --> 00:20:32,210 Dan jadi ini, kita akan melihat, mencapai hasil yang sama. 422 00:20:32,210 --> 00:20:33,890 >> Bagaimana lagi Anda mungkin menerapkan satu lingkaran? 423 00:20:33,890 --> 00:20:36,980 Nah, di Scratch Anda mungkin kode keras nomor tertentu 424 00:20:36,980 --> 00:20:39,430 iterasi pada loop di sini. 425 00:20:39,430 --> 00:20:43,210 Dan itulah apa yang kita mungkin dilakukan di versi ini C, 426 00:20:43,210 --> 00:20:46,140 dimana kita memiliki apa yang disebut untuk loop. 427 00:20:46,140 --> 00:20:49,850 Dan untuk loop di sini akan untuk iterate, agak samar, 428 00:20:49,850 --> 00:20:54,100 dari nilai 0 ke atas untuk tetapi kurang dari 10. 429 00:20:54,100 --> 00:20:55,955 >> Sekarang variabel dalam Scratch. 430 00:20:55,955 --> 00:20:57,830 Anda mungkin tidak memiliki kesempatan untuk menggunakan ini. 431 00:20:57,830 --> 00:21:02,516 Tapi apa gunanya, secara umum, variabel yang kita katakan minggu lalu? 432 00:21:02,516 --> 00:21:03,015 Apa itu? 433 00:21:03,015 --> 00:21:03,780 >> AUDIENCE: Poin. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. Malan: Untuk menunjukkan? 435 00:21:05,200 --> 00:21:05,700 Oh, poin. 436 00:21:05,700 --> 00:21:07,620 OK, melacak poin, misalnya, dalam sebuah permainan. 437 00:21:07,620 --> 00:21:09,510 Atau lebih umum melakukan apa dengan variabel? 438 00:21:09,510 --> 00:21:10,450 Apa kegunaan mereka? 439 00:21:10,450 --> 00:21:10,825 >> AUDIENCE: Memory. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. Malan: Ya, jadi memori. 441 00:21:11,750 --> 00:21:13,000 Ini untuk menyimpan sesuatu. 442 00:21:13,000 --> 00:21:17,336 Dan jenis konyol visual yang saya gunakan terakhir kali adalah seperti mangkuk kaca ini. 443 00:21:17,336 --> 00:21:19,710 Dan jika kita ingin menyimpan sesuatu di dalam variabel, 444 00:21:19,710 --> 00:21:21,918 misalnya sekarang yang nilai enam karena ada 445 00:21:21,918 --> 00:21:23,450 enam bola ping pong di sini. 446 00:21:23,450 --> 00:21:26,158 Ini hanya beberapa jenis penyimpanan wadah yang di bawah tenda 447 00:21:26,158 --> 00:21:30,030 diimplementasikan dengan bit, 0 dan 1, Namun komputer terjadi untuk melakukan itu. 448 00:21:30,030 --> 00:21:32,900 >> Jadi dalam Scratch, jika kita ingin memiliki variabel, 449 00:21:32,900 --> 00:21:34,840 kita dapat menggunakan blok oranye seperti ini. 450 00:21:34,840 --> 00:21:37,050 Kami akan menelepon counter yang dalam kasus ini. 451 00:21:37,050 --> 00:21:38,890 Aku diinisialisasi ke 0. 452 00:21:38,890 --> 00:21:41,080 Dan apa yang kemudian saya lakukan? 453 00:21:41,080 --> 00:21:44,780 Selamanya, mengatakan counter, yang jika Anda bermain dengan itu dalam Scratch, 454 00:21:44,780 --> 00:21:45,780 Anda hanya akan melihat Scratch. 455 00:21:45,780 --> 00:21:49,920 Kucing atau kostum apa pun yang Anda memakai dia akan berbicara nomor yang bersangkutan. 456 00:21:49,920 --> 00:21:52,840 >> Ubah kontra dengan 1 adalah seperti incrementing oleh 1. 457 00:21:52,840 --> 00:21:56,580 Dan jadi ini akan menghitung dari apa jadi apa? 458 00:21:56,580 --> 00:21:59,114 Dari 0 til infinity, atau sampai Scratch istirahat, 459 00:21:59,114 --> 00:22:01,030 atau sampai Anda semacam kehilangan minat dalam menonton 460 00:22:01,030 --> 00:22:02,650 seberapa tinggi dia benar-benar bisa menghitung. 461 00:22:02,650 --> 00:22:04,800 >> Jadi bagaimana mungkin kita mengubahnya ke C? 462 00:22:04,800 --> 00:22:06,480 Ini akan terlihat sedikit samar. 463 00:22:06,480 --> 00:22:08,896 Tapi sekali lagi, jika Anda melihat masing-masing baris ini secara individual 464 00:22:08,896 --> 00:22:10,410 mereka jenis lineup umumnya. 465 00:22:10,410 --> 00:22:13,526 Jadi rupanya int akan memiliki beberapa arti khusus dalam C. 466 00:22:13,526 --> 00:22:14,400 Kita akan melihat itu lagi. 467 00:22:14,400 --> 00:22:15,810 Sebagai samping itu berarti integer. 468 00:22:15,810 --> 00:22:16,990 Jadi itu hanya berarti nomor. 469 00:22:16,990 --> 00:22:18,920 Jadi itulah jenis kaca mangkuk saya inginkan, satu 470 00:22:18,920 --> 00:22:21,120 yang dapat menyimpan nomor, tidak ping pong bola. 471 00:22:21,120 --> 00:22:25,520 Dan aku akan menggunakan tanda sama ada untuk menetapkan nilai 0. 472 00:22:25,520 --> 00:22:29,440 Jadi itu cukup seperti set ke 0, tetapi di C. 473 00:22:29,440 --> 00:22:32,840 >> Sementara itu, sementara benar, itu setara, tentu saja, untuk selamanya, 474 00:22:32,840 --> 00:22:35,980 meskipun itu sedikit samar, dan kemudian dalam kurung kurawal. 475 00:22:35,980 --> 00:22:39,188 Dan Anda bisa memikirkan ini kurung kurawal, yang Anda dapat mengetik pada keyboard Anda, 476 00:22:39,188 --> 00:22:43,110 sebagai benar-benar menjadi seperti kelengkungan di ini blok lingkaran kuning di Scratch. 477 00:22:43,110 --> 00:22:45,700 Ini mencakup beberapa baris kode. 478 00:22:45,700 --> 00:22:48,120 >> Printf adalah mendapatkan sedikit menakutkan sekarang karena saya 479 00:22:48,120 --> 00:22:51,120 melihat tidak hanya mengutip dalam tanda kurung. 480 00:22:51,120 --> 00:22:55,160 Tapi apa lagi yang baru sintaksis dalam contoh ini? 481 00:22:55,160 --> 00:22:57,300 Ada persen d. 482 00:22:57,300 --> 00:22:58,551 Dan kemudian backslash n ada. 483 00:22:58,551 --> 00:23:00,883 Kita memang melihat itu sebelumnya, bahkan meskipun saya tidak menyebutkan itu. 484 00:23:00,883 --> 00:23:01,886 Lalu ada koma. 485 00:23:01,886 --> 00:23:03,010 Dan kemudian ada counter. 486 00:23:03,010 --> 00:23:05,010 >> Tapi kita akan melihat hanya dalam saat itu ini hanya 487 00:23:05,010 --> 00:23:09,080 cara standar untuk mengatakan mencetak "Angka desimal," kutipan, tanda kutip, 488 00:23:09,080 --> 00:23:10,500 beberapa angka desimal. 489 00:23:10,500 --> 00:23:13,370 Tapi aku akan memberitahu Anda nanti apa itu angka desimal. 490 00:23:13,370 --> 00:23:16,835 Jadi fakta bahwa ada koma di baris ini mengatakan printf, 491 00:23:16,835 --> 00:23:18,710 berarti pergi ke depan dan mencetak beberapa angka desimal. 492 00:23:18,710 --> 00:23:23,110 Oh, dan omong-omong, jumlah ini apapun nilai variabel ini. 493 00:23:23,110 --> 00:23:25,880 Dan sehingga untuk membuat ini lebih jelas, kita akan melihat contoh 494 00:23:25,880 --> 00:23:30,930 tak lama melibatkan persis printf dalam konteks program-program nyata C. 495 00:23:30,930 --> 00:23:33,472 >> Sekarang hanya untuk membungkus beberapa dari konstruksi tersebut. 496 00:23:33,472 --> 00:23:36,680 Ekspresi Boolean, Anda mungkin tidak memiliki kesempatan untuk menggunakan ini dalam program Anda 497 00:23:36,680 --> 00:23:39,450 tapi Anda mungkin sangat baik, terutama jika menggunakan kondisi. 498 00:23:39,450 --> 00:23:43,460 Dan jadi ini dua contoh dari Gores artinya jika x kurang dari y, 499 00:23:43,460 --> 00:23:48,770 atau jika x kurang dari y dan y kurang dari z, bagaimana kita bisa menerjemahkan itu? 500 00:23:48,770 --> 00:23:50,810 >> Nah, di C itu hanya akan terlihat seperti ini. 501 00:23:50,810 --> 00:23:55,300 Sedikit samar, lebih kurung, beberapa ampersands aneh, tetapi pada dasarnya 502 00:23:55,300 --> 00:23:59,160 ide-ide yang sederhana seperti mereka berada di dunia potongan puzzle. 503 00:23:59,160 --> 00:24:02,690 Kami hanya memeriksa apakah sesuatu kurang dari sesuatu yang lain. 504 00:24:02,690 --> 00:24:03,910 >> Bagaimana kondisi? 505 00:24:03,910 --> 00:24:09,710 Singkatnya dalam bahasa Inggris, apa ini serangkaian kode Scratch yang akan Anda katakan? 506 00:24:09,710 --> 00:24:11,050 >> AUDIENCE: Membandingkan dua angka. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. Malan: Membandingkan dua angka, dan jika x kurang dari y 508 00:24:13,760 --> 00:24:14,860 ia mengatakan sebanyak. 509 00:24:14,860 --> 00:24:18,080 Jika x lebih besar dari y ia mengatakan sebanyak, lain 510 00:24:18,080 --> 00:24:20,740 jika x sama dengan y dikatakan sebagai banyak. 511 00:24:20,740 --> 00:24:22,180 Sekarang mana x dan y berasal? 512 00:24:22,180 --> 00:24:22,680 Siapa tahu. 513 00:24:22,680 --> 00:24:25,380 Ini sepotong Scratch kode adalah di luar konteks. 514 00:24:25,380 --> 00:24:29,050 Tapi apa yang ingin kita lakukan sekarang adalah menerjemahkan ini untuk sesaat untuk melihat. 515 00:24:29,050 --> 00:24:31,660 >> Sehingga Anda merasa nyaman minggu ini pada Soal Set 516 00:24:31,660 --> 00:24:34,190 0 bermain di dunia ini di sebelah kiri, menyadari 517 00:24:34,190 --> 00:24:36,940 bahwa ide-ide yang tidak berubah minggu ini atau berikutnya atau lebih. 518 00:24:36,940 --> 00:24:38,690 Kami hanya akan mulai menulis hal-hal 519 00:24:38,690 --> 00:24:41,240 dengan cara yang berbeda dengan kami keyboard bukan mouse kita. 520 00:24:41,240 --> 00:24:44,577 >> Jadi, jika x kurang dari y, dan ada beberapa tanda kurung di sana, 521 00:24:44,577 --> 00:24:47,160 kemudian ada beberapa kurung kurawal lagi untuk jenis merangkum 522 00:24:47,160 --> 00:24:48,970 seperti potongan puzzle kuning dilakukan. 523 00:24:48,970 --> 00:24:53,000 Dan aku akan printf x kurang dari y dan sebagainya. 524 00:24:53,000 --> 00:24:56,540 >> Apa yang baik tentang C, seperti yang Anda lihat di sini, 525 00:24:56,540 --> 00:25:00,480 adalah bahwa Anda tidak mendapatkan bersarang ini, bersarang, bersarang itu tentu 526 00:25:00,480 --> 00:25:02,220 akan mendorong kode Anda ke kanan. 527 00:25:02,220 --> 00:25:04,990 Anda malah bisa memiliki segalanya lineup rapi seperti ini. 528 00:25:04,990 --> 00:25:08,960 Tapi itu hanya sebuah estetika detail kita akan melihat lagi sebelum lama. 529 00:25:08,960 --> 00:25:09,660 >> Baiklah. 530 00:25:09,660 --> 00:25:13,290 Jadi yang membawa kita kembali ke samar melihat program ini. 531 00:25:13,290 --> 00:25:15,180 Mari kita benar-benar menulis beberapa kode. 532 00:25:15,180 --> 00:25:16,830 Sekarang bagaimana Anda pergi tentang menulis kode? 533 00:25:16,830 --> 00:25:21,310 Bertahun-tahun yang telah Anda dimiliki Mac atau PC, desktop atau laptop, 534 00:25:21,310 --> 00:25:24,520 Anda sudah benar-benar memiliki kemampuan untuk mulai menulis kode pemrograman. 535 00:25:24,520 --> 00:25:27,050 Tapi Anda mungkin hilang jenis khusus dari program. 536 00:25:27,050 --> 00:25:28,470 Anda pasti bisa menulis kode. 537 00:25:28,470 --> 00:25:30,740 Tapi Anda tidak bisa selalu, keluar dari kotak, 538 00:25:30,740 --> 00:25:34,210 mengkonversi kode sumber ke dalam kode obyek, 0 dan 1 539 00:25:34,210 --> 00:25:35,619 tanpa apa pada komputer Anda? 540 00:25:35,619 --> 00:25:36,410 AUDIENCE: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. Malan: Jadi compiler, kan. 542 00:25:37,630 --> 00:25:39,730 Sekarang sebagian dari Anda mungkin tidak memiliki kompiler, 543 00:25:39,730 --> 00:25:41,259 tidak pernah download kompilator. 544 00:25:41,259 --> 00:25:44,300 Tapi Anda akan melihat Anda dapat men-download seperti kebanyakan setiap bagian lain dari perangkat lunak. 545 00:25:44,300 --> 00:25:47,470 Dalam dunia Mac OS, Anda mungkin download atau telah di-download sudah 546 00:25:47,470 --> 00:25:50,437 sesuatu yang disebut Xcode atau GCC atau dentang. 547 00:25:50,437 --> 00:25:52,270 Jika Anda datang dari Jendela dunia Anda mungkin 548 00:25:52,270 --> 00:25:56,190 telah di-download Visual Studio, Visual Basic, lingkungan seperti itu. 549 00:25:56,190 --> 00:25:59,200 Ada puluhan kompiler hari ini yang mungkin Anda gunakan. 550 00:25:59,200 --> 00:26:01,940 Tapi pendek itu di sini adalah bahwa hal itu akan menjadi sakit 551 00:26:01,940 --> 00:26:04,480 dan, terus terang, teknologi mimpi buruk bagi ratusan 552 00:26:04,480 --> 00:26:07,680 orang dengan berbeda konfigurasi komputer untuk semua 553 00:26:07,680 --> 00:26:09,800 mengkonfigurasi mesin mereka dengan cara yang persis sama 554 00:26:09,800 --> 00:26:11,700 sehingga kita semua bisa pada halaman yang sama. 555 00:26:11,700 --> 00:26:15,240 >> Jadi apa yang kita, sebagai gantinya, lakukan di CS50 adalah kita memberikan 556 00:26:15,240 --> 00:26:18,349 lingkungan standar, Linux lingkungan yang 557 00:26:18,349 --> 00:26:20,140 akan terlihat sedikit sesuatu seperti ini. 558 00:26:20,140 --> 00:26:22,980 Anda akan melihat lebih banyak dari ini di Masalah Set 1 spesifikasi yang 559 00:26:22,980 --> 00:26:25,330 akan pergi online Jumat malam ini. 560 00:26:25,330 --> 00:26:28,360 >> Dan apa artinya ini adalah bahwa Anda selanjutnya 561 00:26:28,360 --> 00:26:32,060 akan dapat men-download dan menginstal sebuah program 562 00:26:32,060 --> 00:26:33,650 disebut CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Dan Anda akan men-download dan menginstal program lain yang disebut 564 00:26:36,275 --> 00:26:40,300 hypervisor, yang hanya cara mewah untuk mencapai hal ini. 565 00:26:40,300 --> 00:26:44,600 Apakah Anda memiliki Mac atau PC atau Linux komputer atau komputer Solaris, 566 00:26:44,600 --> 00:26:46,830 atau gila operasi apapun Sistem Anda menjalankan, 567 00:26:46,830 --> 00:26:49,820 Anda akan men-download program disebut hypervisor yang 568 00:26:49,820 --> 00:26:53,350 akan menjalankan CS50 Peralatan pada komputer Anda 569 00:26:53,350 --> 00:26:55,430 tidak peduli apa sistem operasi Anda. 570 00:26:55,430 --> 00:27:00,640 Sebuah hypervisor dengan kata lain mengubah barang-barang kami ke bahasa apa pun, 571 00:27:00,640 --> 00:27:03,850 Instruksi Anda apa pun komputer sendiri mengerti. 572 00:27:03,850 --> 00:27:04,962 >> Jadi ini adalah layering a. 573 00:27:04,962 --> 00:27:06,920 Dan lagi, ini adalah jenis tematik di komputer 574 00:27:06,920 --> 00:27:08,722 ilmu pengetahuan, bangunan di atas hal. 575 00:27:08,722 --> 00:27:09,680 Anda mungkin memiliki Windows. 576 00:27:09,680 --> 00:27:10,710 Anda mungkin memiliki Mac OS. 577 00:27:10,710 --> 00:27:12,960 Tapi mulai minggu depan Anda akan telah men-download 578 00:27:12,960 --> 00:27:14,980 sebuah software gratis disebut hypervisor. 579 00:27:14,980 --> 00:27:17,800 Kau akan telah men-download sepotong perangkat lunak yang disebut CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Itu akan berjalan dalam hypervisor, yang akan dijalankan pada komputer Anda. 581 00:27:21,050 --> 00:27:23,030 Dan hasil akhirnya adalah bahwa kita semua akan 582 00:27:23,030 --> 00:27:26,220 memiliki jendela sederhana seperti ini pada Mac atau PC 583 00:27:26,220 --> 00:27:30,160 yang memberi kita ilusi semua menjalankan sistem operasi yang sama, 584 00:27:30,160 --> 00:27:32,800 tanpa lainnya dampak pada komputer Anda. 585 00:27:32,800 --> 00:27:34,870 Dan Anda bisa layar penuh dan pada dasarnya berperilaku 586 00:27:34,870 --> 00:27:37,550 seolah-olah Anda sedang menjalankan sistem operasi yang disebut Linux, 587 00:27:37,550 --> 00:27:40,270 yang adalah apa yang CS50 Peralatan didasarkan pada. 588 00:27:40,270 --> 00:27:42,930 >> Jadi mari kita benar-benar menggunakan ini sekarang untuk menulis sebuah program. 589 00:27:42,930 --> 00:27:45,450 Anda dapat menulis sebuah program menggunakan Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Anda dapat menulis sebuah program menggunakan TextEdit, atau Notepad, 591 00:27:48,160 --> 00:27:51,880 atau WordPad, atau hampir semua kata program pengolah Anda pernah menggunakan. 592 00:27:51,880 --> 00:27:55,174 Tetapi kenyataannya adalah Anda tidak harus menggunakan benar-benar salah satu dari mereka program. 593 00:27:55,174 --> 00:27:57,840 Anda tentu tidak harus menggunakan sesuatu seperti Microsoft Word, yang 594 00:27:57,840 --> 00:28:01,120 memiliki menghadap dan garis miring tebal, dan font besar dan font yang lebih kecil, 595 00:28:01,120 --> 00:28:03,560 karena komputer tidak peduli semua itu. 596 00:28:03,560 --> 00:28:05,600 Semua komputer akan pedulikan adalah 597 00:28:05,600 --> 00:28:09,040 Inggris seperti instruksi tertulis di C. 598 00:28:09,040 --> 00:28:12,050 >> Jadi apa yang akan kita lakukan dalam dari Appliance CS50 599 00:28:12,050 --> 00:28:14,290 adalah menggunakan program bebas tersedia, dan itu 600 00:28:14,290 --> 00:28:17,360 pra-instal dalam alat, yang disebut Gedit. 601 00:28:17,360 --> 00:28:22,280 Dan Gedit hanya super sederhana Editor teks seperti Mac OS TextEdit, 602 00:28:22,280 --> 00:28:26,200 seperti Windows Notepad yang akan terlihat sedikit sesuatu seperti ini. 603 00:28:26,200 --> 00:28:28,910 >> Jadi mari kita sebenarnya tidak melihat slide ini. 604 00:28:28,910 --> 00:28:32,580 Tapi mari kita benar-benar pergi ke lingkungan itu sendiri. 605 00:28:32,580 --> 00:28:36,090 Aku akan pergi ke depan dan login, pada window lain ini, 606 00:28:36,090 --> 00:28:40,910 untuk saya CS50 Appliance, yang saya sudah pra-instal di laptop saya di sini. 607 00:28:40,910 --> 00:28:43,771 >> Perhatikan bahwa, seperti Windows dan Mac OS, itu punya beberapa menu. 608 00:28:43,771 --> 00:28:45,520 Seperti Windows menempatkan itu di sana sebagai gantinya 609 00:28:45,520 --> 00:28:47,020 Mac OS, yang menempatkan di sana. 610 00:28:47,020 --> 00:28:48,930 Tetapi kenyataannya adalah itu semua jenis yang sama. 611 00:28:48,930 --> 00:28:50,770 Dan di sini adalah keseluruhan sekelompok perangkat lunak. 612 00:28:50,770 --> 00:28:51,770 Ada Dropbox. 613 00:28:51,770 --> 00:28:54,780 Ada sejumlah besar aksesoris, program grafis yang kita akan 614 00:28:54,780 --> 00:28:56,430 gunakan nanti dalam jangka untuk masalah set. 615 00:28:56,430 --> 00:28:59,650 Ada web browser built in sehingga bahwa ini adalah komputer matang penuh 616 00:28:59,650 --> 00:29:01,240 dalam komputer. 617 00:29:01,240 --> 00:29:04,170 >> Tapi aku akan klik ini paling kiri icon putih di sini, 618 00:29:04,170 --> 00:29:05,890 yang merupakan ikon untuk Gedit. 619 00:29:05,890 --> 00:29:09,650 Dan itu akan membuka jendela yang memiliki tiga panel untuk itu, 620 00:29:09,650 --> 00:29:12,590 satu kiri, satu atas, dan yang bawah. 621 00:29:12,590 --> 00:29:16,071 >> Sekarang dalam satu atas hak ini yang Aku akan benar-benar menulis beberapa kode. 622 00:29:16,071 --> 00:29:16,820 Jadi mari kita lakukan ini ,. 623 00:29:16,820 --> 00:29:19,040 Aku akan pergi ke File, Save. 624 00:29:19,040 --> 00:29:22,100 Dan Anda mungkin tidak pernah melihat window tertentu sebelumnya. 625 00:29:22,100 --> 00:29:23,620 Tapi ini seperti Mac OS atau Windows. 626 00:29:23,620 --> 00:29:25,490 Ini hanya jendela dengan semua folder 627 00:29:25,490 --> 00:29:27,290 bahwa saya memiliki dalam komputer ini. 628 00:29:27,290 --> 00:29:30,320 >> Dan aku akan menyimpan file sebagai hello.c. 629 00:29:30,320 --> 00:29:32,690 Dan aku akan pergi depan dan klik Save. 630 00:29:32,690 --> 00:29:36,364 Dan sekarang melihat saya memiliki tab di sebelah kiri atas disebut hello.c. 631 00:29:36,364 --> 00:29:38,280 Jadi mungkin cukup akrab bahkan jika Anda tidak sudah 632 00:29:38,280 --> 00:29:40,240 menggunakan program khusus ini sebelumnya. 633 00:29:40,240 --> 00:29:44,890 >> Dan sekarang aku akan mengetik pada mereka urutan cukup samar perintah 634 00:29:44,890 --> 00:29:46,360 bahwa kita melihat beberapa saat yang lalu. 635 00:29:46,360 --> 00:29:49,330 Sertakan, standar I / O.h. 636 00:29:49,330 --> 00:29:50,600 Lebih lanjut tentang segera itu. 637 00:29:50,600 --> 00:29:55,670 Int void main, terbuka keriting brace, brace menutup keriting. 638 00:29:55,670 --> 00:30:01,570 Dan kemudian dalam sana saya pikir di mana kita memiliki "hello world," titik koma. 639 00:30:01,570 --> 00:30:03,100 Dan sekarang simpan. 640 00:30:03,100 --> 00:30:08,780 >> Jadi ini adalah program yang ditulis dalam C, ditulis, oleh karena itu, dalam kode sumber. 641 00:30:08,780 --> 00:30:10,720 Tapi aku tidak bisa menjalankan program ini. 642 00:30:10,720 --> 00:30:13,390 Aku agak ingin melipatgandakan klik pada ikon di suatu tempat, 643 00:30:13,390 --> 00:30:16,390 tapi tidak ada icon ada lainnya dari file kode sumber. 644 00:30:16,390 --> 00:30:20,359 Apa, sekali lagi, adalah proses yang sekarang Aku perlu menjalankan file ini melalui? 645 00:30:20,359 --> 00:30:21,150 AUDIENCE: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. Malan: Jadi kompilator. 647 00:30:22,399 --> 00:30:24,890 Jadi dalam komputer yang berbeda Anda melakukan hal ini dengan cara yang berbeda. 648 00:30:24,890 --> 00:30:27,480 Tapi apa yang kita lakukan di sini di Appliance CS50 yang 649 00:30:27,480 --> 00:30:31,260 wakil dari bagaimana Anda mungkin melakukan hal ini pada banyak sistem yang berbeda, 650 00:30:31,260 --> 00:30:34,036 adalah aku hanya akan menjalankan perintah yang disebut make. 651 00:30:34,036 --> 00:30:35,660 Dan membuat secara harfiah akan melakukan itu. 652 00:30:35,660 --> 00:30:36,640 Membuat saya program. 653 00:30:36,640 --> 00:30:39,060 >> Sehingga membuat akan menjalankan kompiler bagi saya. 654 00:30:39,060 --> 00:30:42,160 Dan nama program Saya ingin membuat adalah halo. 655 00:30:42,160 --> 00:30:43,510 Sekarang buat adalah sebuah program. 656 00:30:43,510 --> 00:30:47,170 Dan membuat cukup untuk cerdas menyadari bahwa jika saya katakan membuat halo, 657 00:30:47,170 --> 00:30:50,980 itu akan terlihat secara otomatis untuk file bernama hello.c 658 00:30:50,980 --> 00:30:53,420 hanya karena itulah cara itu dikonfigurasi. 659 00:30:53,420 --> 00:31:00,300 >> Jadi ketika saya sekarang tekan Enter sini, ini garis samar gila baru saja dieksekusi. 660 00:31:00,300 --> 00:31:02,720 Dan percayalah, sebelum panjang, dalam waktu hanya beberapa hari, 661 00:31:02,720 --> 00:31:05,590 Anda akan mengerti apa semua itu omong kosong berarti. 662 00:31:05,590 --> 00:31:11,150 Tapi untuk saat ini, hanya tahu bahwa membuat eksekusi dipicu dari kompilator. 663 00:31:11,150 --> 00:31:13,290 Dengan kata lain, ia menemukan compiler di komputer saya 664 00:31:13,290 --> 00:31:14,820 itu pra-instal pada Appliance CS50 665 00:31:14,820 --> 00:31:16,560 bahwa kita akan menyerahkan kepada Anda dalam Masalah Set 1. 666 00:31:16,560 --> 00:31:20,990 Dan kemudian mengambil hello.c sebagai input, dan menghasilkan rupanya 667 00:31:20,990 --> 00:31:23,040 0 dan 1 sebagai output. 668 00:31:23,040 --> 00:31:29,410 >> Dan secara default apa yang dilakukannya adalah menghemat mereka 0s dan 1s dalam file yang disebut halo. 669 00:31:29,410 --> 00:31:33,180 Dan meskipun sintaks ini juga mungkin baru bagi Anda, hanya dengan mengatakan dot 670 00:31:33,180 --> 00:31:37,110 slash hello akan menjadi sarana yang saya menjalankan program ini. 671 00:31:37,110 --> 00:31:40,360 >> Untuk saat ini dan untuk beberapa setidaknya minggu, hampir semua program 672 00:31:40,360 --> 00:31:44,230 kita menulis akan berada di jendela teks hitam dan putih. 673 00:31:44,230 --> 00:31:47,006 Tidak ada tikus, tidak ada klik, tidak ada jendela, tidak ada ikon. 674 00:31:47,006 --> 00:31:49,630 Kita akan tetap sederhana dan fokus pada ide-ide yang mendasari 675 00:31:49,630 --> 00:31:52,490 awalnya sebelum kita sampai ke sesuatu tingkat yang lebih tinggi, misalnya, 676 00:31:52,490 --> 00:31:56,410 seperti istirahat keluar permainan yang kita bicarakan tentang di kuliah pertama pekan lalu. 677 00:31:56,410 --> 00:32:00,820 >> Jadi, ketika saya tekan Enter sini, itu setara dalam teks saja lingkungan 678 00:32:00,820 --> 00:32:03,272 untuk menggandakan mengklik ikon yang disebut halo. 679 00:32:03,272 --> 00:32:05,480 Apa yang Anda harapkan akan terjadi ketika saya tekan Enter kemudian? 680 00:32:05,480 --> 00:32:07,120 >> AUDIENCE: Ini akan mencetak "hello world." 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. Malan: Semoga akan mencetak "hello world." 682 00:32:10,000 --> 00:32:11,370 Dan memang hal itu. 683 00:32:11,370 --> 00:32:13,690 Sekarang sudah ada beberapa sintaks samar di sini. 684 00:32:13,690 --> 00:32:15,950 Mari kita mundur hanya saat dan melihat apakah kita 685 00:32:15,950 --> 00:32:19,530 tidak dapat memulai menyimpulkan hanya dengan bermain-main, mencoba dan gagal, 686 00:32:19,530 --> 00:32:21,130 seperti apa yang terjadi di sini. 687 00:32:21,130 --> 00:32:23,609 Bagaimana jika saya menyingkirkan backslash n? 688 00:32:23,609 --> 00:32:25,650 Sekarang beberapa dari Anda yang sudah diprogram sebelumnya mungkin 689 00:32:25,650 --> 00:32:27,054 langsung tahu apa artinya. 690 00:32:27,054 --> 00:32:29,220 Tapi bagi anda yang sudah tidak pernah diprogram sebelumnya, 691 00:32:29,220 --> 00:32:34,052 setidaknya berpikir untuk diri sendiri apa yang terjadi untuk mengubah ketika saya jalankan program ini? 692 00:32:34,052 --> 00:32:37,010 Jadi aku akan kembali ke saya sedikit jendela hitam dan putih, yang 693 00:32:37,010 --> 00:32:39,290 adalah jendela di mana Saya dapat mengkompilasi ini. 694 00:32:39,290 --> 00:32:41,130 Aku akan mengkompilasi ulang halo. 695 00:32:41,130 --> 00:32:43,520 Kita akan melihat hal yang sama urutan samar perintah. 696 00:32:43,520 --> 00:32:45,719 Dan aku akan melakukan dot slash halo. 697 00:32:45,719 --> 00:32:48,260 Dan sekarang seseorang, jika Anda mau, siapa yang pernah diprogram sebelumnya, 698 00:32:48,260 --> 00:32:49,770 apa yang mungkin berbeda kali ini? 699 00:32:49,770 --> 00:32:50,020 Ya. 700 00:32:50,020 --> 00:32:51,840 >> AUDIENCE: Ini tidak akan berhenti printing "hello world." 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. Malan: Ini akan untuk-- maaf? 702 00:32:52,660 --> 00:32:54,210 >> AUDIENCE: Ini tidak akan berhenti mencetak itu? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. Malan: Tidak akan berhenti mencetak "hello world." 704 00:32:55,810 --> 00:32:56,560 Jadi bukan ide yang buruk. 705 00:32:56,560 --> 00:32:58,633 Ide lain? 706 00:32:58,633 --> 00:32:59,132 Ya. 707 00:32:59,132 --> 00:33:00,060 >> AUDIENCE: Pesan Error? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. Malan: Error pesan, OK, bisa. 709 00:33:01,750 --> 00:33:02,250 Apa lagi? 710 00:33:02,250 --> 00:33:05,479 AUDIENCE: Mungkin mencetak braket dengan titik koma juga? 711 00:33:05,479 --> 00:33:08,270 DAVID J. Malan: Mungkin mencetak braket dengan titik koma juga. 712 00:33:08,270 --> 00:33:11,950 Jadi mungkin backslash itu maka beberapa jenis terminous yang penting. 713 00:33:11,950 --> 00:33:14,860 Setiap pikiran lain? 714 00:33:14,860 --> 00:33:16,412 >> Jadi semua ide yang baik. 715 00:33:16,412 --> 00:33:18,370 Dan pada kenyataannya, itu akan menjadi pesan kesalahan. 716 00:33:18,370 --> 00:33:20,400 Itu mungkin yang paling mungkin menjadi jawaban secara umum 717 00:33:20,400 --> 00:33:22,420 untuk beberapa minggu ke depan seperti yang kita belajar kode di sini. 718 00:33:22,420 --> 00:33:27,680 >> Tapi untuk saat ini mengingat bahwa komputer hanya melakukan apa yang Anda katakan mereka lakukan. 719 00:33:27,680 --> 00:33:30,400 Banyak seperti kacang konyol mentega dan contoh jelly. 720 00:33:30,400 --> 00:33:33,860 Komputer manusia kami hanya harus untuk melakukan apa yang Anda katakan kepada mereka untuk dilakukan. 721 00:33:33,860 --> 00:33:36,250 Jadi dalam hal ini, jika Anda tidak memberitahu komputer 722 00:33:36,250 --> 00:33:41,190 untuk memindahkan kursor yang berkedip ke baris berikutnya, itu tidak akan melakukannya. 723 00:33:41,190 --> 00:33:45,390 Jadi ketika saya menjalankan program ini sekarang, melihat perbedaan. 724 00:33:45,390 --> 00:33:46,900 >> Sepertinya bug. 725 00:33:46,900 --> 00:33:49,190 Ini adalah bug estetika, mungkin. 726 00:33:49,190 --> 00:33:53,310 Tapi apa yang berbeda tentang hal ini Output versus terakhir jelas? 727 00:33:53,310 --> 00:33:53,810 Ya. 728 00:33:53,810 --> 00:33:54,920 >> AUDIENCE: Itu tidak melakukan baris baru. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. Malan: Itu tidak melakukan baris baru. 730 00:33:56,586 --> 00:33:58,740 Sekarang anda yang memiliki halaman web mungkin dibuat 731 00:33:58,740 --> 00:34:01,910 sebelumnya, Anda mungkin tahu dari BR tag atau tag paragraf, 732 00:34:01,910 --> 00:34:03,120 sangat mirip dalam roh. 733 00:34:03,120 --> 00:34:06,680 Sebuah web browser akan mengabaikan Anda sampai Anda mengatakan itu persis apa yang harus dilakukan. 734 00:34:06,680 --> 00:34:10,020 Demikian pula, adalah bahasa seperti C hanya akan melakukan apa yang Anda kirim dapat dilakukan. 735 00:34:10,020 --> 00:34:12,730 >> Jadi alasan bahwa semua contoh ini, 736 00:34:12,730 --> 00:34:15,350 sejauh ini, memiliki jenis santai memiliki backslash ini 737 00:34:15,350 --> 00:34:18,560 di sana, itu berarti dengan mana Anda mengekspresikan diri 738 00:34:18,560 --> 00:34:21,380 sebagai karakter baris baru, sehingga untuk berbicara. 739 00:34:21,380 --> 00:34:26,219 Dan Anda dapat jenis menghargai, mungkin, bahwa ini akan terlihat agak bodoh 740 00:34:26,219 --> 00:34:27,070 jika tidak ada lagi. 741 00:34:27,070 --> 00:34:29,150 Jika saya ingin baris baru, hanya menekan Enter dan kemudian jenis 742 00:34:29,150 --> 00:34:32,219 dari menyembelih kode seperti itu harus benar-benar menggosok Anda dengan cara yang benar. 743 00:34:32,219 --> 00:34:33,830 Dan bahkan jika Anda tidak benar-benar peduli pada titik ini, 744 00:34:33,830 --> 00:34:35,830 Anda akan menyadari bahwa ini bukan terutama 745 00:34:35,830 --> 00:34:37,870 tampan potongan kode. 746 00:34:37,870 --> 00:34:39,969 >> Dan jadi apa dunia tahun lalu memutuskan adalah 747 00:34:39,969 --> 00:34:43,420 bahwa ketika Anda ingin menempatkan kursor ke baris baru secara eksplisit, 748 00:34:43,420 --> 00:34:46,332 Anda secara eksplisit harus mengatakan baris baru, backslash n. 749 00:34:46,332 --> 00:34:48,040 Dan ada beberapa lainnya simbol seperti itu. 750 00:34:48,040 --> 00:34:50,719 Tapi untuk saat ini kita hanya akan fokus pada backslash n. 751 00:34:50,719 --> 00:34:53,790 >> Sekarang mari kita membuat program sedikit lebih menarik. 752 00:34:53,790 --> 00:34:59,200 Aku akan pergi ke depan dan kali ini membuka file baru. 753 00:34:59,200 --> 00:35:02,520 Aku akan menyimpan ini sebagai halo-1.c. 754 00:35:02,520 --> 00:35:05,540 Dan hanya untuk iseng, aku akan pergi memasukkannya ke dalam folder Dropbox saya. 755 00:35:05,540 --> 00:35:09,030 >> Seperti yang akan Anda lihat dalam CS50 dokumentasi untuk alat, 756 00:35:09,030 --> 00:35:11,210 akhir pekan ini untuk Masalah Set 1, kita akan mendorong 757 00:35:11,210 --> 00:35:13,230 Anda menggunakan Dropbox atau beberapa layanan yang setara, 758 00:35:13,230 --> 00:35:15,430 karena maka semua kode Anda akan didukung secara otomatis. 759 00:35:15,430 --> 00:35:17,830 Dan jadi itu sebabnya aku sudah pergi ke folder ini di sini. 760 00:35:17,830 --> 00:35:20,230 >> Dan sekarang aku akan menulis Program yang sedikit berbeda. 761 00:35:20,230 --> 00:35:24,740 Sertakan, standar I / O.h, int void main. 762 00:35:24,740 --> 00:35:29,660 Dan kemudian di sini printf, hello world, yang persis sama seperti sebelumnya. 763 00:35:29,660 --> 00:35:32,450 >> Tapi sekarang saya ingin mencetak sesuatu yang sedikit berbeda. 764 00:35:32,450 --> 00:35:34,800 Saya ingin mencetak, mengatakan, "Halo, David." 765 00:35:34,800 --> 00:35:37,590 Baiklah, jadi jelas, seharusnya mudah-mudahan 766 00:35:37,590 --> 00:35:40,360 menjadi kasus bahwa jika saya ulang program ini, jalankan itu, 767 00:35:40,360 --> 00:35:41,840 itu akan mengatakan "halo, David." 768 00:35:41,840 --> 00:35:45,160 >> Tapi bagaimana jika saya ingin memperkenalkan semacam ini variabel, 769 00:35:45,160 --> 00:35:49,240 gagasan wadah yang akan untuk menyimpan D-a-v-i-d dan kode itu tidak sulit 770 00:35:49,240 --> 00:35:50,600 ke dalam program saya. 771 00:35:50,600 --> 00:35:53,430 Nah bagaimana jika saya mulai melakukan sesuatu seperti ini? 772 00:35:53,430 --> 00:35:57,120 >> String s, jadi ini adalah variabel. 773 00:35:57,120 --> 00:36:00,250 Jika Anda ingin string, a.k.a. kata atau frase. 774 00:36:00,250 --> 00:36:03,485 Sebuah urutan karakter yang kita dalam pemrograman memanggil string. 775 00:36:03,485 --> 00:36:06,610 Kami hanya akan umum panggilan itu s, karena itu adalah nama sederhana yang bagus. 776 00:36:06,610 --> 00:36:08,010 Tapi aku bisa menyebutnya apa pun. 777 00:36:08,010 --> 00:36:12,920 >> Aku akan mengatakan sama dengan string s kutipan tanda kutip, "David," titik koma. 778 00:36:12,920 --> 00:36:18,330 Dan sekarang saya ingin memasukkan D-a-v-i-d ke apa yang saya cetak. 779 00:36:18,330 --> 00:36:23,720 Dan sebelum kita melihat teaser pada layar beberapa sintaks khusus 780 00:36:23,720 --> 00:36:26,050 yang memungkinkan kita untuk pengganti dalam nilai. 781 00:36:26,050 --> 00:36:29,250 Apa khusus simbol beberapa slide yang lalu? 782 00:36:29,250 --> 00:36:30,040 >> Jadi persen. 783 00:36:30,040 --> 00:36:33,830 Pada saat itu persen d untuk angka desimal. 784 00:36:33,830 --> 00:36:35,850 Itu tidak benar-benar tampaknya relevan di sini. 785 00:36:35,850 --> 00:36:38,650 Ternyata ada dunia simbol persen lainnya, 786 00:36:38,650 --> 00:36:42,810 yang persen, yang berdiri untuk tempat untuk string. 787 00:36:42,810 --> 00:36:49,350 >> Jadi sekarang, sangat sederhana, aku akan pergi make-halo 1, 788 00:36:49,350 --> 00:36:54,210 karena file ini disebut hello-1.c, dan tekan Enter. 789 00:36:54,210 --> 00:36:56,230 Dan aku kacau. 790 00:36:56,230 --> 00:36:57,394 Apa yang terjadi? 791 00:36:57,394 --> 00:37:00,560 Nah, di sinilah kita harus mulai menghargai bahwa kita berada di perintah ini 792 00:37:00,560 --> 00:37:02,810 lingkungan line, ini teks hanya lingkungan. 793 00:37:02,810 --> 00:37:06,114 Tidak ada mengklik ikon seperti folder sekarang. 794 00:37:06,114 --> 00:37:07,280 Dan pikirkan kembali beberapa saat yang lalu. 795 00:37:07,280 --> 00:37:10,740 Dalam apa folder aku bilang Aku menyimpan kode saya? 796 00:37:10,740 --> 00:37:11,657 Jadi folder Dropbox. 797 00:37:11,657 --> 00:37:12,989 Bisa disebut apa-apa. 798 00:37:12,989 --> 00:37:14,530 Tapi itu terjadi disebut Dropbox. 799 00:37:14,530 --> 00:37:18,380 Jadi saya entah bagaimana perlu klik dua kali pada bahwa Dropbox folder untuk mendapatkan 800 00:37:18,380 --> 00:37:21,657 ke dalamnya dan mendapatkan saya kode yang disebut halo-1.c. 801 00:37:21,657 --> 00:37:24,490 Bahkan, biarkan aku pergi ke depan dan meminimalkan jendela ini untuk sesaat. 802 00:37:24,490 --> 00:37:27,560 Sama seperti Windows dan Mac OS, ada folder di Linux. 803 00:37:27,560 --> 00:37:29,410 Ada folder dalam CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 Hanya saja sekarang kita membatasi diri untuk lingkungan teks ini. 805 00:37:32,380 --> 00:37:34,700 >> Tapi kalau aku double click pada Dropbox, melihat ada 806 00:37:34,700 --> 00:37:37,210 adalah file yang saya ingin mengkompilasi. 807 00:37:37,210 --> 00:37:41,430 Tapi aku butuh ini hitam dan putih jendela terminal, sehingga untuk berbicara. 808 00:37:41,430 --> 00:37:45,750 Tapi aku butuh, oleh karena itu, untuk bergerak ke dalam folder atau direktori. 809 00:37:45,750 --> 00:37:48,290 Jadi sedikit misterius, namun Anda akan terbiasa dengan ini juga. 810 00:37:48,290 --> 00:37:50,430 >> Dalam dunia Linux, yang lagi operasi 811 00:37:50,430 --> 00:37:54,860 Sistem kita menjalankan bagian dalam CS50 Appliance, ada perintah yang disebut CD. 812 00:37:54,860 --> 00:37:58,310 Yang berarti saya bisa melakukan CD, ruang, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, direktori perubahan. 814 00:37:59,900 --> 00:38:00,400 Benar. 815 00:38:00,400 --> 00:38:02,890 Kembali pada hari ketika orang-orang menciptakan komputer dan operasi 816 00:38:02,890 --> 00:38:05,806 sistem seperti ini, mereka ingin ketik keystrokes mungkin paling sedikit. 817 00:38:05,806 --> 00:38:08,760 Jadi cara termudah untuk mengatakan mengubah direktori adalah CD. 818 00:38:08,760 --> 00:38:13,910 >> Jadi jika aku memukul CD, ruang Dropbox, melihat apa yang telah berubah di sini. 819 00:38:13,910 --> 00:38:16,480 Di dalam kurung alat jenis 820 00:38:16,480 --> 00:38:19,360 dari humoring saya dan mengingatkan saya keberadaan saya. 821 00:38:19,360 --> 00:38:21,480 Jadi folder terbuka adalah Dropbox. 822 00:38:21,480 --> 00:38:24,950 Jika saya sekarang ketik ls untuk daftar, sekali lagi ringkas, 823 00:38:24,950 --> 00:38:27,540 karena orang tidak mau ketik kembali pada hari l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Jadi mereka bukan membuat ls. 825 00:38:29,300 --> 00:38:30,110 >> Enter. 826 00:38:30,110 --> 00:38:35,740 Perhatikan saya melihat dua hal, halo-1.c, dan kemudian hal ini samar, sumber 1m. 827 00:38:35,740 --> 00:38:38,310 Itu hanya cara saya untuk mengatakan source code untuk minggu 1 Senin. 828 00:38:38,310 --> 00:38:42,020 Itu folder saya download dari Situs CS50 yang saya buat sebelumnya hari ini 829 00:38:42,020 --> 00:38:43,990 dan hanya memasukkannya ke dalam alat di muka. 830 00:38:43,990 --> 00:38:47,550 >> Tapi untuk saat ini satu-satunya hal yang kita pedulikan adalah pembuatan program ini. 831 00:38:47,550 --> 00:38:50,440 Jadi ketika saya mengetik make-halo 1, Enter. 832 00:38:50,440 --> 00:38:51,320 Sialan. 833 00:38:51,320 --> 00:38:53,060 Sesuatu yang salah. 834 00:38:53,060 --> 00:38:54,580 Jadi mari kita menggoda ini terpisah. 835 00:38:54,580 --> 00:38:58,489 Dan sayangnya ini adalah di mana hal-hal mendapatkan sedikit stres pada awalnya, 836 00:38:58,489 --> 00:39:00,280 setidaknya jika Anda sudah tidak pernah diprogram sebelumnya. 837 00:39:00,280 --> 00:39:00,980 >> My god. 838 00:39:00,980 --> 00:39:04,990 Aku menulis sebuah program dua baris dan Saya memiliki empat lini kesalahan. 839 00:39:04,990 --> 00:39:07,180 Jadi apa yang terjadi di sini. 840 00:39:07,180 --> 00:39:11,370 Pertama dan terpenting selalu gulir kembali dan menemukan pesan kesalahan pertama, 841 00:39:11,370 --> 00:39:15,730 karena seringkali kompiler hanya bingung dengan apa yang Anda dan saya lakukan. 842 00:39:15,730 --> 00:39:17,000 Compiler cukup bodoh. 843 00:39:17,000 --> 00:39:18,360 Mereka hanya akan melakukan apa yang Anda memberitahu mereka untuk melakukannya. 844 00:39:18,360 --> 00:39:21,484 Dan jika Anda membingungkan mereka, mereka hanya akan jenis muntah tangan mereka 845 00:39:21,484 --> 00:39:25,010 dan mungkin melemparkan pesan kesalahan yang lebih dari sebenarnya relevan. 846 00:39:25,010 --> 00:39:26,380 >> Jadi mari kita lihat yang pertama. 847 00:39:26,380 --> 00:39:27,540 Super samar pada awalnya. 848 00:39:27,540 --> 00:39:31,050 Tapi perhatikan, inilah nama file di mana saya kacau rupanya. 849 00:39:31,050 --> 00:39:36,570 Colon 5, usus 5 hanya berarti pada baris 5 pada karakter kelima. 850 00:39:36,570 --> 00:39:39,760 Jadi kolom kelima karakter, jika Anda mau, error. 851 00:39:39,760 --> 00:39:41,870 Penggunaan dideklarasikan string identifier. 852 00:39:41,870 --> 00:39:43,120 Apakah yang Anda maksud standar n? 853 00:39:43,120 --> 00:39:44,850 >> Tidak, aku berarti tali. 854 00:39:44,850 --> 00:39:47,640 Dan maka itu jenis copy dan paste 855 00:39:47,640 --> 00:39:50,700 apa yang saya ketik untuk benar-benar menarik saya memperhatikan di mana saya kacau. 856 00:39:50,700 --> 00:39:54,260 Jadi untuk beberapa alasan C, atau setidaknya compiler 857 00:39:54,260 --> 00:39:56,470 tidak memahami string kata. 858 00:39:56,470 --> 00:39:57,890 Dan itu karena kita membuat itu. 859 00:39:57,890 --> 00:40:01,440 Jadi string tidak ada di C. Apa CS50 tidak, 860 00:40:01,440 --> 00:40:03,380 selama beberapa minggu pertama hanya kelas, 861 00:40:03,380 --> 00:40:05,700 adalah kita memberikan beberapa pelatihan roda, sehingga untuk berbicara. 862 00:40:05,700 --> 00:40:11,160 Dan kami menempatkan ini roda pelatihan dalam file khusus yang disebut CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Jadi, ini adalah yang kedua dari dua berkas nama-nama yang tampaknya berakhir di titik h. 864 00:40:14,970 --> 00:40:16,300 Mari kita mundur. 865 00:40:16,300 --> 00:40:19,360 Printf adalah pernyataan atau fungsi yang tampaknya mencetak sesuatu 866 00:40:19,360 --> 00:40:20,580 ke layar. 867 00:40:20,580 --> 00:40:23,470 Tapi Anda tidak melihat saya menerapkan printf, benar. 868 00:40:23,470 --> 00:40:26,360 Seseorang tahun yang lalu dilaksanakan printf. 869 00:40:26,360 --> 00:40:30,420 Dalam file apa yang akan Anda taruhan dia atau dia menempatkan pelaksanaan 870 00:40:30,420 --> 00:40:34,270 untuk printf, kode untuk printf? 871 00:40:34,270 --> 00:40:36,860 >> Dalam file bernama standar I / O.h. 872 00:40:36,860 --> 00:40:39,930 Bahkan, itu mungkin di dua file, standar I / O.h, 873 00:40:39,930 --> 00:40:42,650 yang merupakan singkatan untuk header File, dan standar I / O.c, 874 00:40:42,650 --> 00:40:44,060 yang merupakan singkatan dari kode sumber C. 875 00:40:44,060 --> 00:40:48,220 Jadi dia beberapa tahun yang lalu menjatuhkan kode yang mereka tulis ke dalam file tersebut 876 00:40:48,220 --> 00:40:51,240 sehingga orang-orang seperti kita tahun kemudian bisa memasukkannya, 877 00:40:51,240 --> 00:40:53,040 sehingga untuk berbicara, dalam program kita sendiri. 878 00:40:53,040 --> 00:40:56,320 >> Dan memang, itulah yang tanda pound diikuti oleh kata termasuk tidak. 879 00:40:56,320 --> 00:41:00,250 Ini terlihat pada hard drive lokal, menemukan file bernama standar I / O.h, 880 00:41:00,250 --> 00:41:03,840 dan kemudian secara efektif eksemplar dan pasta di dalam file saya sendiri. 881 00:41:03,840 --> 00:41:07,210 Jadi sekarang program saya tahu cara mencetak ke layar. 882 00:41:07,210 --> 00:41:11,120 >> Jadi dengan logika, di mana adalah string yang didefinisikan? 883 00:41:11,120 --> 00:41:12,260 >> AUDIENCE: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. Malan: CS50.h. 885 00:41:13,290 --> 00:41:15,540 Dan memang, itulah yang kita, staf inti, telah melakukan. 886 00:41:15,540 --> 00:41:19,590 Kami telah menciptakan sebuah tipe data beberapa, sehingga untuk berbicara, seperti string, 887 00:41:19,590 --> 00:41:22,370 selain yang Anda dapatkan secara gratis, seperti int. 888 00:41:22,370 --> 00:41:26,010 Dan kita akan melihat orang lain seperti char untuk karakter dan beberapa lagi. 889 00:41:26,010 --> 00:41:30,670 Di dalam CS50.h ternyata adalah setidaknya beberapa menyebutkan string. 890 00:41:30,670 --> 00:41:34,980 >> Jadi sekarang biarkan aku pergi ke depan dan jalankan kembali membuat hello-1. 891 00:41:34,980 --> 00:41:37,100 Aku akan memperbesar lagi dan menyilangkan jari. 892 00:41:37,100 --> 00:41:41,370 Sekarang dengan telah membuat satu mengubah saya tetap banyak hal. 893 00:41:41,370 --> 00:41:42,100 Tapi sialan. 894 00:41:42,100 --> 00:41:44,290 Persen lebih dari argumen data. 895 00:41:44,290 --> 00:41:45,980 Apa yang saya lakukan salah kali ini? 896 00:41:45,980 --> 00:41:47,420 >> Jadi masih cukup samar. 897 00:41:47,420 --> 00:41:51,560 Tapi kesalahan ini pada line 7 dan karakter 21. 898 00:41:51,560 --> 00:41:53,880 Jadi mari kita lihat di sini. 899 00:41:53,880 --> 00:41:55,350 Ini sedikit halus. 900 00:41:55,350 --> 00:41:59,167 Tapi jika Anda berpikir tentang apa ide-ide dasar di sini adalah, 901 00:41:59,167 --> 00:42:00,500 mungkin kita bisa menggoda ini terpisah. 902 00:42:00,500 --> 00:42:02,300 >> Jadi printf adalah nama fungsi. 903 00:42:02,300 --> 00:42:04,960 Kurung, sejauh ini, adalah seperti apa yang kita masukkan sekitar 904 00:42:04,960 --> 00:42:07,005 hal-hal yang kita lewat sebagai masukan untuk fungsi. 905 00:42:07,005 --> 00:42:08,921 Baiklah, hanya konvensi manusia sewenang-wenang. 906 00:42:08,921 --> 00:42:09,919 Gunakan tanda kurung. 907 00:42:09,919 --> 00:42:12,460 Di dalam mereka kurung kami telah menempatkan tanda kutip ganda, 908 00:42:12,460 --> 00:42:14,810 dan kemudian string seperti "hello world." 909 00:42:14,810 --> 00:42:18,160 >> Tapi dalam contoh sebelumnya sangat sebentar apakah kita melihat dengan Scratch. 910 00:42:18,160 --> 00:42:22,590 Dan kami memiliki persen d, apa lagi berada di dalam mereka kurung 911 00:42:22,590 --> 00:42:23,730 bahwa saya memanggil secara lisan? 912 00:42:23,730 --> 00:42:24,230 Ya. 913 00:42:24,230 --> 00:42:28,166 >> AUDIENCE: Jadi apa yang Anda mengambil [Tak terdengar] dari dalam [Tak terdengar] 914 00:42:28,166 --> 00:42:30,200 apa ini [Tak terdengar]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. Malan: Tepat. 916 00:42:31,200 --> 00:42:32,700 Jadi kami punya persen d. 917 00:42:32,700 --> 00:42:36,620 Tapi kemudian kami harus tutup kutipan, koma, counter. 918 00:42:36,620 --> 00:42:37,120 Benar. 919 00:42:37,120 --> 00:42:40,680 Kami ditentukan apa yang kita inginkan lakukan sebagai placeholder. 920 00:42:40,680 --> 00:42:44,621 Jadi apa yang akan saya lakukan di sini adalah koma, apa yang Anda ingin saya untuk menempatkan? 921 00:42:44,621 --> 00:42:45,120 AUDIENCE: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. Malan: S, karena dalam kasus ini 923 00:42:46,828 --> 00:42:48,700 adalah nama dari wadah penyimpanan. 924 00:42:48,700 --> 00:42:50,180 Ini adalah nama yang mangkuk kaca. 925 00:42:50,180 --> 00:42:53,610 Padahal sebelumnya itu kontra dalam Scratch contoh sederhana kita melihat. 926 00:42:53,610 --> 00:42:56,630 Jadi sekarang telah membuat dua perubahan, biarkan aku memperbesar 927 00:42:56,630 --> 00:42:59,800 dan mencoba sekali lagi untuk mengkompilasi program ini. 928 00:42:59,800 --> 00:43:01,596 >> Sekarang saya melihat bahwa garis samar. 929 00:43:01,596 --> 00:43:03,470 Tapi itu sebenarnya nama kompilator. 930 00:43:03,470 --> 00:43:04,886 Dentang adalah nama dari compiler. 931 00:43:04,886 --> 00:43:07,100 Membuat hanya menyelamatkan saya sakit kepala yang pernah 932 00:43:07,100 --> 00:43:09,830 mengetik bahwa perintah yang panjang gila. 933 00:43:09,830 --> 00:43:14,900 Jadi sekarang jika saya dot slash hello-1, Aku harus melihat "Halo, David." 934 00:43:14,900 --> 00:43:16,450 >> Cukup underwhelming, meskipun, kan? 935 00:43:16,450 --> 00:43:18,158 Kita bisa melakukan ini jauh lebih sederhana 936 00:43:18,158 --> 00:43:20,940 tanpa berbicara tentang variabel dan CS50.h dan semua itu. 937 00:43:20,940 --> 00:43:23,080 Jadi, mari kita membuat sebuah sedikit lebih menarik. 938 00:43:23,080 --> 00:43:31,010 >> Selain CS50.h, memiliki hal-hal seperti tali 939 00:43:31,010 --> 00:43:34,550 menyatakan, perpustakaan CS50 juga memiliki beberapa fungsi. 940 00:43:34,550 --> 00:43:38,520 Jadi sama seperti tahun lalu, seseorang menulis printf dan memasukkannya ke dalam standar I / O.h 941 00:43:38,520 --> 00:43:39,530 dan beberapa file lain. 942 00:43:39,530 --> 00:43:44,010 >> Kami, staf CS50, menulis fungsi disebut getchar, GetDouble, getFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, dan kami menempatkan mereka dalam sebuah file 944 00:43:47,610 --> 00:43:49,890 disebut CS50.h dan CS50.c. 945 00:43:49,890 --> 00:43:51,880 Dan kami menempatkan mereka di dalam dari CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 Dan orang-orang juga bisa men-download secara online jika mereka 947 00:43:53,880 --> 00:43:55,880 ingin menempatkan mereka pada mereka komputer sendiri juga. 948 00:43:55,880 --> 00:44:00,880 Yang mengatakan bahwa kita telah menciptakan fungsi yang mendapatkan masukan dari pengguna. 949 00:44:00,880 --> 00:44:02,930 Aku tidak tahu apa semua dari tipe data ini adalah. 950 00:44:02,930 --> 00:44:06,490 GetInt adalah jenis sederhana, seperti mendapatkan integer entah bagaimana dari pengguna. 951 00:44:06,490 --> 00:44:09,980 Dan GetString mungkin seperti mendapatkan sebuah kata atau kalimat dari pengguna. 952 00:44:09,980 --> 00:44:11,770 >> Jadi mari kita fokus pada hal itu. 953 00:44:11,770 --> 00:44:14,710 Dan aku akan kembali ke alat dan aku akan pergi ke depan 954 00:44:14,710 --> 00:44:20,790 dan menyimpan file ini sebagai, mari kita sebut itu hello-2.c sebagai versi kedua. 955 00:44:20,790 --> 00:44:23,030 Dan mari kita membuat beberapa perubahan. 956 00:44:23,030 --> 00:44:25,800 >> Kali ini bukan hard coding David, yang 957 00:44:25,800 --> 00:44:29,120 membuat sangat konsisten tetapi program underwhelming, 958 00:44:29,120 --> 00:44:32,640 bagaimana jika saya bukan melakukan GetString? 959 00:44:32,640 --> 00:44:35,660 Sekarang perhatikan GetString memiliki kurung buka, 960 00:44:35,660 --> 00:44:38,500 kurung tertutup, karena tidak perlu masukan apapun. 961 00:44:38,500 --> 00:44:40,850 Itu hanya akan pergi mendapatkan string dari pengguna. 962 00:44:40,850 --> 00:44:42,460 >> Dan sekarang kata pada sintaks lainnya. 963 00:44:42,460 --> 00:44:45,439 Koma hanya mengakhiri baris kode. 964 00:44:45,439 --> 00:44:46,730 Anda tidak membutuhkan mereka di mana-mana. 965 00:44:46,730 --> 00:44:48,896 Tapi itu hanya berarti aku dilakukan dengan baris kode. 966 00:44:48,896 --> 00:44:51,080 Biarkan aku pindah ke lain Pernyataan atau fungsi. 967 00:44:51,080 --> 00:44:53,010 String menyatakan variabel. 968 00:44:53,010 --> 00:44:55,920 String adalah seperti mengatakan memberi saya mangkuk, silakan. 969 00:44:55,920 --> 00:44:57,940 Dan biarkan aku menempatkan string di dalamnya. 970 00:44:57,940 --> 00:44:59,430 >> Dan sekarang tanda sama. 971 00:44:59,430 --> 00:45:03,510 Apa tanda sama pada dasarnya setara dengan? 972 00:45:03,510 --> 00:45:04,500 >> AUDIENCE: Tetapkan. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. Malan: Ya, menetapkan nilai. 974 00:45:06,190 --> 00:45:09,872 Jadi jika saya, misalnya, panggilan fungsi GetString ini, 975 00:45:09,872 --> 00:45:12,830 dan kita akan melihat di saat yang akan meminta pengguna untuk string. 976 00:45:12,830 --> 00:45:17,810 Ini seperti membiarkan saya kemudian menulis D-a-v-i-d pada selembar kertas. 977 00:45:17,810 --> 00:45:21,060 Dan ketika saya mengatakan tali s sama GetString, 978 00:45:21,060 --> 00:45:24,140 sama tidak benar-benar berarti sama dalam pemrograman C. 979 00:45:24,140 --> 00:45:27,880 Ini berarti menetapkan dari kanan sisi ke sisi kiri. 980 00:45:27,880 --> 00:45:29,510 >> Jadi saya sudah mendapatkan string. 981 00:45:29,510 --> 00:45:32,785 Dan tanda sama berarti meletakkannya dalam penyimpanan kontainer disebut s. 982 00:45:32,785 --> 00:45:36,730 Dan Kemudian melewati ini off untuk printf untuk benar-benar melakukan hal tersebut. 983 00:45:36,730 --> 00:45:39,790 >> Jadi hasil akhirnya kemudian akan terlihat sedikit berbeda. 984 00:45:39,790 --> 00:45:40,840 Mari kita lakukan membuat hello-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Entah bisa bekerja. 987 00:45:45,260 --> 00:45:46,450 Kau mengikuti dari awal. 988 00:45:46,450 --> 00:45:47,940 Membuat hello-2 bekerja. 989 00:45:47,940 --> 00:45:52,640 Dot slash hello-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Saya tampaknya memiliki terbatas lingkaran atau sesuatu. 991 00:45:54,620 --> 00:45:55,453 Tidak ada yang terjadi. 992 00:45:55,453 --> 00:45:56,134 Mengapa? 993 00:45:56,134 --> 00:45:57,805 >> AUDIENCE: Ini membuat loop tak terbatas. 994 00:45:57,805 --> 00:45:59,430 DAVID J. Malan: Ini adalah infinite loop. 995 00:45:59,430 --> 00:46:02,710 Ini semacam menunggu saya untuk benar-benar memberikan dengan beberapa masukan. 996 00:46:02,710 --> 00:46:05,800 Jadi biarkan aku pergi ke depan dan ketik di David, dan tekan Enter. 997 00:46:05,800 --> 00:46:07,230 Dan sekarang ia mengatakan "Halo, David." 998 00:46:07,230 --> 00:46:09,040 Jika saya jalankan lagi. 999 00:46:09,040 --> 00:46:11,530 Mari kita ketik Rob, "Halo, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Sekarang ini adalah yang terburuk user interface pernah. 1001 00:46:13,900 --> 00:46:16,110 Pengguna ini rupanya seharusnya tahu apa yang harus dilakukan. 1002 00:46:16,110 --> 00:46:17,120 Tapi tak peduli. 1003 00:46:17,120 --> 00:46:19,570 Dengan menggunakan gedung yang sama blok seperti di Scratch, 1004 00:46:19,570 --> 00:46:24,980 kita dapat memecahkan masalah itu dan mengatakan sesuatu seperti nama Anda, mohon, usus besar, 1005 00:46:24,980 --> 00:46:27,820 ruang, ditutup kutipan, dekat kurung, koma. 1006 00:46:27,820 --> 00:46:30,680 Jadi banyak lagi kekonyolan dengan sintaks. 1007 00:46:30,680 --> 00:46:34,040 >> Tapi perhatikan aku baru saja menambahkan potongan puzzle di atas satu ini 1008 00:46:34,040 --> 00:46:35,280 dan di atas satu ini. 1009 00:46:35,280 --> 00:46:38,870 Jadi sekarang jika saya jalankan ini, hello-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Tunggu dulu. 1011 00:46:41,180 --> 00:46:41,830 Apa yang salah? 1012 00:46:41,830 --> 00:46:43,570 Ini tidak berperilaku secara berbeda. 1013 00:46:43,570 --> 00:46:44,200 Ya. 1014 00:46:44,200 --> 00:46:46,010 >> AUDIENCE: Anda tidak menjalankan membuat lagi. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. Malan: Aku tidak jalankan make lagi, kan. 1016 00:46:47,968 --> 00:46:49,430 Jadi saya telah mengubah kode sumber. 1017 00:46:49,430 --> 00:46:50,638 Tapi sekali lagi, ada aliran itu. 1018 00:46:50,638 --> 00:46:54,530 Source code melalui compiler memberikan Anda kode objek baru, atau 0 dan 1. 1019 00:46:54,530 --> 00:47:00,209 Jadi aku harus benar-benar make jalankan kembali hello-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, sesuatu tampaknya telah terjadi. 1021 00:47:01,750 --> 00:47:04,220 Dot slash hello-2. 1022 00:47:04,220 --> 00:47:05,390 Nama Anda silakan. 1023 00:47:05,390 --> 00:47:09,990 Dan harus jelas sekarang, mengapa kursor pada baris yang sama? 1024 00:47:09,990 --> 00:47:10,490 Tepat. 1025 00:47:10,490 --> 00:47:13,020 Saya tidak menempatkan backslash n di sini dalam kode saya. 1026 00:47:13,020 --> 00:47:16,110 Jadi sekarang aku bisa menulis sesuatu seperti Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Aku bisa lari lagi dan ketik sesuatu seperti Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 dan kami mendapatkan program yang berbeda lagi dan lagi dan lagi. 1029 00:47:22,250 --> 00:47:28,940 >> Sekarang akhirnya kita akan membutuhkan menggunakan kemampuan yang berbeda. 1030 00:47:28,940 --> 00:47:32,860 Kita perlu memperkenalkan akhirnya beberapa kondisi untuk melakukan hal-hal kondisional. 1031 00:47:32,860 --> 00:47:35,550 Mungkin loop sehingga kami dapat melakukan hal lagi dan lagi. 1032 00:47:35,550 --> 00:47:38,220 >> Mungkin akan lebih baik jika kita bisa menerapkan fungsi kita sendiri, 1033 00:47:38,220 --> 00:47:41,355 seperti kita bisa menerapkan kita sendiri printf atau versi kita sendiri GetString 1034 00:47:41,355 --> 00:47:45,870 dan GetFlow, karena pada akhirnya bahkan menggunakan ini lingkungan baris perintah 1035 00:47:45,870 --> 00:47:49,780 bisa kita lakukan bahkan yang paling visual menarik hal. 1036 00:47:49,780 --> 00:47:51,950 >> Memang dalam kesimpulan biarkan aku melakukan ini. 1037 00:47:51,950 --> 00:47:54,020 Aku akan pergi ke depan dan menutup jendela ini 1038 00:47:54,020 --> 00:47:57,400 dan buka icon ini di sini, yang hanya lebih besar 1039 00:47:57,400 --> 00:48:00,020 versi yang tertanam jendela terminal. 1040 00:48:00,020 --> 00:48:02,329 Jadi Gedit tidak hanya tempat untuk kode saya, 1041 00:48:02,329 --> 00:48:05,620 tetapi juga dibangun di jendela terminal, jendela hitam dan putih di mana saya dapat menjalankan 1042 00:48:05,620 --> 00:48:06,230 perintah. 1043 00:48:06,230 --> 00:48:08,600 >> Aku hanya terjadi untuk membuka versi yang lebih besar dari ini. 1044 00:48:08,600 --> 00:48:11,170 Dan sekarang aku akan pergi ke folder yang saya sudah sudah 1045 00:48:11,170 --> 00:48:13,150 dimasukkan ke dalam muka di website program ini. 1046 00:48:13,150 --> 00:48:16,720 Dan aku akan pergi ke depan dan membuka file bernama thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 yang ditulis oleh orang lain. 1048 00:48:18,710 --> 00:48:21,220 >> Dan jika kita lihat ini, ini bukan jenis kode 1049 00:48:21,220 --> 00:48:24,370 kita akan menulis sejak tujuan kode ini 1050 00:48:24,370 --> 00:48:28,450 adalah menulis tercantik mencari kode yang ia bisa, 1051 00:48:28,450 --> 00:48:31,290 terlepas dari apakah atau tidak manusia lain yang pernah bisa 1052 00:48:31,290 --> 00:48:33,660 memahami kode ini. 1053 00:48:33,660 --> 00:48:37,050 >> Memang, setiap tahun ada apa disebut C kontes dikaburkan, yang 1054 00:48:37,050 --> 00:48:39,570 adalah untuk Geeks nyata yang menulis kode yang tidak ada orang lain dapat membaca, 1055 00:48:39,570 --> 00:48:42,050 tapi yang melakukan sesuatu baik benar-benar sederhana atau benar-benar menakjubkan. 1056 00:48:42,050 --> 00:48:43,890 Dan kami pikir kami akan menyimpulkan dengan tampilan ini 1057 00:48:43,890 --> 00:48:48,300 pada sesuatu yang sangat menakjubkan Anda mungkin telah melihat sekali sebelumnya. 1058 00:48:48,300 --> 00:48:52,650 Tapi kita akan berakhir pada ini catatan, dot slash, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Ini kemudian adalah apa yang menanti. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Itu saja untuk CS50. 1062 00:48:58,500 --> 00:48:59,935 Kita akan melihat Anda pada hari Rabu. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [MUSIC PLAYING] 1065 00:49:10,016 --> 00:53:31,883