1 00:00:00,000 --> 00:00:12,410 >> [MUSIC PLAYING] 2 00:00:12,410 --> 00:00:12,830 >> DAVID Malan: Baiklah. 3 00:00:12,830 --> 00:00:13,370 Selamat datang kembali. 4 00:00:13,370 --> 00:00:16,510 Ini adalah CS50, dan ini adalah Minggu Pertama, Lanjutan. 5 00:00:16,510 --> 00:00:20,050 Jadi salah satu alasan kami telah melewati sekitar teknologi seperti 6 00:00:20,050 --> 00:00:24,120 Google Kaca adalah bahwa mereka datang dengan sesuatu yang dikenal sebagai API, sebuah 7 00:00:24,120 --> 00:00:25,980 Application Programming Interface. 8 00:00:25,980 --> 00:00:28,830 Dan apa artinya ini adalah bahwa dengan file yang tepat dan dengan hak 9 00:00:28,830 --> 00:00:32,850 dokumentasi, Anda benar-benar dapat menulis perangkat lunak untuk perangkat bahkan seperti ini. 10 00:00:32,850 --> 00:00:36,200 >> Dan apa yang kita miliki dalam pikiran terhadap semester akhir, jika proyek 11 00:00:36,200 --> 00:00:39,310 melibatkan, misalnya, Google mungkin Kaca banding, kita akan melihat apa yang bisa kita lakukan dalam 12 00:00:39,310 --> 00:00:42,220 hal mengaitkan Anda dengan beberapa hardware loaner serta 13 00:00:42,220 --> 00:00:46,500 diakses publik API sehingga Anda dapat benar-benar mulai membuat perangkat lunak 14 00:00:46,500 --> 00:00:48,630 yang berjalan pada bahwa Google Glass yang sama. 15 00:00:48,630 --> 00:00:51,710 >> Perangkat lain yang kami sudah bermain dengan akhir-akhir ini kita berpikir bahwa mungkin 16 00:00:51,710 --> 00:00:53,910 menyenangkan di akhir semester adalah hal kecil di sini. 17 00:00:53,910 --> 00:00:56,860 Ini disebut Leap Motion dan apa yang Anda akan melihat secara teknis 18 00:00:56,860 --> 00:01:00,280 iklan untuk perangkat, tetapi tidak berbicara dengan apa khusus ini 19 00:01:00,280 --> 00:01:01,240 perangkat mampu. 20 00:01:01,240 --> 00:01:05,550 Dan juga, dilengkapi dengan API melalui yang dapat Anda menulis perangkat lunak untuk 21 00:01:05,550 --> 00:01:10,545 mengontrol komputer Anda sendiri dengan cara cukup seperti film ini satu menit di sini. 22 00:01:10,545 --> 00:01:12,070 >> [VIDEO PEMUTARAN] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [END VIDEO PEMUTARAN] 25 00:02:08,590 --> 00:02:11,190 >> Jadi sekarang, perangkat ini terjadi pada dilaksanakan sebagai USB kecil 26 00:02:11,190 --> 00:02:14,290 konektor yang dapat Anda plug ke Anda komputer, tapi aku tidak akan terkejut 27 00:02:14,290 --> 00:02:17,930 jika sebelum lama kita memiliki jenis-jenis teknologi dalam batch berikutnya PC 28 00:02:17,930 --> 00:02:20,510 dan Mac sehingga Anda dapat, memang, berinteraksi dengannya dalam 29 00:02:20,510 --> 00:02:21,650 cara seperti itu. 30 00:02:21,650 --> 00:02:24,250 Bahkan, apa yang saya pikir saya akan melakukan juga, adalah Aku menarik sebuah demonstrasi kecil 31 00:02:24,250 --> 00:02:25,860 program yang dilengkapi dengan perangkat lunak ini. 32 00:02:25,860 --> 00:02:28,700 Jadi saya sudah menempatkan sensor kecil di depan laptop saya. 33 00:02:28,700 --> 00:02:32,420 >> Dan seperti yang Anda lihat, sudah menyadari bahwa tangan saya ada 34 00:02:32,420 --> 00:02:33,400 mengendalikannya. 35 00:02:33,400 --> 00:02:37,900 Dan semua aplikasi ini dilakukan secara dgn hal-hal kecil seperti ini. 36 00:02:37,900 --> 00:02:41,080 Tapi Anda bisa melihat bahwa, memang, Saya memiliki lima jari di sana. 37 00:02:41,080 --> 00:02:44,270 Jika kita bisa mendapatkannya untuk melakukan semua 10, Anda bisa membayangkan sebuah piano rapi 38 00:02:44,270 --> 00:02:45,390 aplikasi atau sejenisnya. 39 00:02:45,390 --> 00:02:47,820 Jadi jika Anda ingin datang setelah kelas hari ini dan bermain dengan itu sebagai 40 00:02:47,820 --> 00:02:49,720 baik, Anda dipersilakan untuk. 41 00:02:49,720 --> 00:02:52,930 Jadi lebih pada menjelang akhir semester. 42 00:02:52,930 --> 00:02:54,420 >> Jadi beberapa administrasi pengumuman. 43 00:02:54,420 --> 00:02:58,690 Satu, lakukan bagian demi hari Jumat ini pada siang hari di cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 URL yang di lapangan itu homepage juga. 45 00:03:01,260 --> 00:03:04,010 Sementara itu, meskipun, supersections akan debut hari Minggu ini. 46 00:03:04,010 --> 00:03:07,800 Supersections adalah hal yang satu kali, karena membawa kita beberapa waktu untuk bekerja 47 00:03:07,800 --> 00:03:09,470 siapa yang ada di bagian mana dan di mana. 48 00:03:09,470 --> 00:03:12,280 >> Jadi hari Minggu ini datang, akan ada satu bagian untuk mereka yang kurang nyaman, 49 00:03:12,280 --> 00:03:14,040 satu bagian untuk mereka lebih nyaman. 50 00:03:14,040 --> 00:03:16,110 Dan bagi Anda di suatu tempat di antara dipersilakan untuk pergi ke 51 00:03:16,110 --> 00:03:17,850 salah satu atau keduanya atau tidak. 52 00:03:17,850 --> 00:03:19,150 Kedua hal ini akan difilmkan. 53 00:03:19,150 --> 00:03:22,740 Mereka akan berada di auditorium yang lebih besar dari Bagian yang biasanya akan masuk 54 00:03:22,740 --> 00:03:26,110 Tetapi tujuan di sini adalah untuk membekali Anda dengan beberapa kenyamanan dengan permasalahan yang satu, 55 00:03:26,110 --> 00:03:29,910 dengan C, dengan CS50 alat, ini akhir pekan, bahkan sebelum Anda mengetahui Anda 56 00:03:29,910 --> 00:03:31,050 tugas bagian formal. 57 00:03:31,050 --> 00:03:34,700 Jadi Anda akan bertemu TF dan kecil Anda kelompok sectionmates di sekitar 58 00:03:34,700 --> 00:03:36,350 waktu seminggu. 59 00:03:36,350 --> 00:03:38,200 >> Jam kantor, sementara itu, telah terjadi. 60 00:03:38,200 --> 00:03:41,020 Apakah mengambil keuntungan dari mereka malam ini atau besok malam jika Anda ingin. 61 00:03:41,020 --> 00:03:43,460 Soal set 0 jatuh tempo pada hari Jumat. 62 00:03:43,460 --> 00:03:46,680 Ini adalah hari paling lambat terjadwal secara berkala Kamis. 63 00:03:46,680 --> 00:03:50,410 Tetapi dengan masalah set 1, Anda akan melihat yang mencakup beberapa pemanasan 64 00:03:50,410 --> 00:03:52,770 latihan yang Anda sendiri Anda dapat memperpanjang 65 00:03:52,770 --> 00:03:54,660 Kamis batas waktu sampai Jumat. 66 00:03:54,660 --> 00:03:58,410 Soal set 1, sementara itu, akan debut di website kursus akan datang ini 67 00:03:58,410 --> 00:04:02,000 Jumat, jika Anda ingin meringkuk dengan itu seperti yang saya lakukan sekali waktu akhir 68 00:04:02,000 --> 00:04:04,370 Jumat malam di kamar Anda. 69 00:04:04,370 --> 00:04:07,660 >> Jadi cs50.net/appliance adalah tempat di mana Anda bisa mendapatkan alat CS50 70 00:04:07,660 --> 00:04:09,040 bahwa kita mulai menggunakan pada hari Senin. 71 00:04:09,040 --> 00:04:10,140 Kami akan menggunakan sedikit lebih hari ini. 72 00:04:10,140 --> 00:04:14,040 Tapi yakinlah bahwa masalah set 1 spesifikasi akan memandu Anda melalui 73 00:04:14,040 --> 00:04:16,490 tepatnya langkah-langkah yang Anda butuhkan untuk mendapatkan dan berjalan. 74 00:04:16,490 --> 00:04:22,120 Jadi jangan khawatir tentang melakukan itu sebelum Pset 1 jika Anda lebih suka tidak. 75 00:04:22,120 --> 00:04:22,660 >> Baik. 76 00:04:22,660 --> 00:04:27,180 Jadi kita melihat pada hari Senin di kode sumber, tetapi dalam konteks yang baru 77 00:04:27,180 --> 00:04:30,895 bahasa pemrograman, yaitu C dan C, seperti Scratch, tidak grafis. 78 00:04:30,895 --> 00:04:32,270 Ini bukan teka-teki potongan. 79 00:04:32,270 --> 00:04:34,450 Ini lebih Inggris-seperti sintaks. 80 00:04:34,450 --> 00:04:37,140 Dan ada beberapa langkah yang terlibat dalam benar-benar menulis dan menjalankan 81 00:04:37,140 --> 00:04:41,650 program di C, karena selain sumber kode seperti ini, Anda perlu sesuatu 82 00:04:41,650 --> 00:04:42,890 yang disebut kompilator. 83 00:04:42,890 --> 00:04:46,682 Dan dalam istilah awam, apa tidak kompilator lakukan untuk kita? 84 00:04:46,682 --> 00:04:47,650 Ya. 85 00:04:47,650 --> 00:04:51,040 >> SISWA: Ini mengubah kode bahwa Anda menulis ke 0s dan 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID Malan: Baik. 87 00:04:51,151 --> 00:04:53,580 Jadi mengubah kode yang kita menulis untuk 0s dan 1s. 88 00:04:53,580 --> 00:04:57,730 Mengkonversi disebut kode sumber untuk kode objek, yang terakhir yang terlihat 89 00:04:57,730 --> 00:04:59,140 sedikit sesuatu seperti ini. 90 00:04:59,140 --> 00:05:02,860 Dan itu CPU Anda, otak dalam komputer Anda, bahwa karena 91 00:05:02,860 --> 00:05:06,280 orang yang menciptakan komputer-komputer, tahu apa mereka urutan 92 00:05:06,280 --> 00:05:07,460 0s dan 1s berarti. 93 00:05:07,460 --> 00:05:08,640 >> Mungkin itu berarti cetak. 94 00:05:08,640 --> 00:05:10,265 Mungkin itu berarti tambahan. 95 00:05:10,265 --> 00:05:11,610 Mungkin itu berarti pengurangan. 96 00:05:11,610 --> 00:05:13,350 Mungkin itu berarti menampilkan grafik. 97 00:05:13,350 --> 00:05:16,870 Ada pola yang telah ditetapkan bit bahwa dunia telah memutuskan berarti 98 00:05:16,870 --> 00:05:17,700 hal-hal tertentu. 99 00:05:17,700 --> 00:05:20,760 Tapi untuk sebagian besar dalam kursus ini, kita akan bekerja di tingkat yang lebih tinggi, dan 100 00:05:20,760 --> 00:05:24,180 kami akan menganggap bahwa terdapat hal-hal seperti compiler yang dapat 101 00:05:24,180 --> 00:05:27,670 membuat fungsi kode sumber kami dalam cara kita inginkan. 102 00:05:27,670 --> 00:05:31,660 >> Jadi program ini kami menulis pertama pekan lalu dan kemudian mulai pelabuhan, sehingga untuk 103 00:05:31,660 --> 00:05:33,920 berbicara, ke C melewati ini Senin, ini. 104 00:05:33,920 --> 00:05:35,700 Ketika bendera hijau diklik, menyapa. 105 00:05:35,700 --> 00:05:37,430 Ini, tentu saja, ditulis dalam Scratch. 106 00:05:37,430 --> 00:05:40,710 Dan saya menyatakan bahwa setara program di C tampak sedikit 107 00:05:40,710 --> 00:05:41,520 sesuatu seperti ini. 108 00:05:41,520 --> 00:05:45,050 >> Jadi apa yang saya pikir kami akan lakukan pada awalnya adalah, mari kita menggoda selain apa yang tampak, pada awalnya 109 00:05:45,050 --> 00:05:48,790 sekilas, diakui, sebagai cukup misterius sintaks, tetapi Anda akan mulai melihat 110 00:05:48,790 --> 00:05:50,160 pola cukup cepat. 111 00:05:50,160 --> 00:05:53,770 Apa kita juga akan lakukan hari ini adalah memberikan Anda dengan mental model untuk beberapa 112 00:05:53,770 --> 00:05:57,280 kanonik, beberapa konstruksi standar dalam pemrograman. 113 00:05:57,280 --> 00:06:00,420 Dan kemudian kita benar-benar akan mendapatkan tangan kami kotor dengan beberapa contoh juga. 114 00:06:00,420 --> 00:06:04,140 >> Jadi bagi anda lebih nyaman, menyadari bahwa minggu ini dan kemudian berikutnya 115 00:06:04,140 --> 00:06:05,940 minggu mungkin sangat baik menjadi sedikit ulasan. 116 00:06:05,940 --> 00:06:08,810 Tapi terutama ketika edisi hacker masalah set 1 keluar pada 117 00:06:08,810 --> 00:06:12,330 website tentu pada hari Jumat, saya pikir Anda akan menemukan bahwa bahkan ketika Anda mengisi 118 00:06:12,330 --> 00:06:15,390 beberapa kekosongan selama minggu depan atau dua, Anda akan mulai mendapatkan semakin 119 00:06:15,390 --> 00:06:18,410 menantang dan menemukan hal-hal baru dan yang lebih baru. 120 00:06:18,410 --> 00:06:21,310 >> Jadi mari kita menggoda program ini terpisah beberapa baris pada satu waktu. 121 00:06:21,310 --> 00:06:24,140 Di bagian paling atas, kita memiliki apa yang teknis disebut 122 00:06:24,140 --> 00:06:25,950 direktif preprocessor. 123 00:06:25,950 --> 00:06:30,510 Ini hanya baris kode yang mengatakan untuk memasukkan isi dari file, 124 00:06:30,510 --> 00:06:35,080 disebut standar I / N, input standar - atau, maaf, standar I / O, standar 125 00:06:35,080 --> 00:06:38,670 input / output,. h, dalam program saya sendiri. 126 00:06:38,670 --> 00:06:41,670 >> Jadi dengan kata lain, jika saya menulis ini program dengan editor teks sederhana seperti 127 00:06:41,670 --> 00:06:45,260 gedit, setara sederhana sesuatu seperti Microsoft Word, yang 128 00:06:45,260 --> 00:06:50,970 instruksi, # include stdio.h, hanya akan memberitahu compiler, ambil 129 00:06:50,970 --> 00:06:56,080 isi dari file lain, stdio.h, dan paste di sini. 130 00:06:56,080 --> 00:06:57,090 >> Sekarang, mengapa saya peduli? 131 00:06:57,090 --> 00:07:01,850 Apa yang kita tuntut dalam file ini disebut stdio.h, yang disimpan 132 00:07:01,850 --> 00:07:05,490 di suatu tempat di harddisk, atau dalam hal ini kasus, di suatu tempat di CS50 alat? 133 00:07:05,490 --> 00:07:06,635 Orang lain menaruhnya di sana untukku. 134 00:07:06,635 --> 00:07:09,910 Tapi apa untungnya? 135 00:07:09,910 --> 00:07:13,020 >> Ya, jadi itu adalah deklarasi fungsi disebut printf. 136 00:07:13,020 --> 00:07:17,400 Jadi ingat printf fungsi yang menampilkan kata-kata dan karakter dan 137 00:07:17,400 --> 00:07:20,160 nomor pada layar atas perintah saya. 138 00:07:20,160 --> 00:07:21,220 Tapi aku tidak menulis itu. 139 00:07:21,220 --> 00:07:22,230 CS50 tidak menulisnya. 140 00:07:22,230 --> 00:07:26,990 Seseorang tahun yang lalu menulis itu, dan mereka pada dasarnya memberi kami resep untuk itu 141 00:07:26,990 --> 00:07:29,110 dalam sebuah file bernama stdio.h. 142 00:07:29,110 --> 00:07:33,240 Sehingga baris pertama hanya memberi saya akses untuk fungsi yang orang lain 143 00:07:33,240 --> 00:07:36,500 menulis tahun yang lalu, antara yang printf. 144 00:07:36,500 --> 00:07:39,450 >> Sekarang, baris berikutnya aku akan gelombang saya tangan pada, setidaknya sampai minggu depan. 145 00:07:39,450 --> 00:07:43,620 Tetapi untuk sekarang, tahu bahwa int main (void) adalah dasarnya setara ini 146 00:07:43,620 --> 00:07:46,310 potongan puzzle kuning saat bendera hijau diklik. 147 00:07:46,310 --> 00:07:49,510 Dunia, tahun lalu, memutuskan bahwa jika Anda sedang menulis sebuah program dalam 148 00:07:49,510 --> 00:07:53,150 bahasa yang disebut C, Anda mulai program anda dengan garis 149 00:07:53,150 --> 00:07:54,410 yang terlihat seperti itu. 150 00:07:54,410 --> 00:07:57,650 Dalam hanya tentang waktu seminggu, itu akan membuat merasakan apa int, apa void. 151 00:07:57,650 --> 00:08:00,840 Tapi untuk saat ini, anggap saja ini karena hal ini potongan puzzle kuning. 152 00:08:00,840 --> 00:08:04,550 >> Sekarang berikutnya, kita memiliki penjepit keriting diikuti oleh lain dekat keriting brace, 153 00:08:04,550 --> 00:08:05,240 sehingga untuk berbicara. 154 00:08:05,240 --> 00:08:07,430 Dan kita akan melihat ini di seluruh program di C, serta 155 00:08:07,430 --> 00:08:08,930 JavaScript dan PHP. 156 00:08:08,930 --> 00:08:11,345 Dan ini hanya merangkum baris terkait kode. 157 00:08:11,345 --> 00:08:14,600 Terbuka keriting brace dasarnya mengatakan, inilah beberapa kode. 158 00:08:14,600 --> 00:08:17,590 Dan keriting penjepit tertutup, yang miring ke arah lain, hanya 159 00:08:17,590 --> 00:08:19,920 berarti, itu saja untuk kode yang relevan. 160 00:08:19,920 --> 00:08:22,970 >> Jadi garis juicy pertama ini Program adalah yang terakhir, printf, 161 00:08:22,970 --> 00:08:25,080 kutipan-tanda kutip, hello world. 162 00:08:25,080 --> 00:08:30,670 Dan aku menelepon hal antara kutipan apa terakhir kali? 163 00:08:30,670 --> 00:08:31,285 Jadi string. 164 00:08:31,285 --> 00:08:35,309 Dan string hanya Techie istilah untuk urutan 165 00:08:35,309 --> 00:08:37,169 karakter, kata, frase. 166 00:08:37,169 --> 00:08:39,380 Bahkan satu huruf bisa menjadi ganda dikutip. 167 00:08:39,380 --> 00:08:41,840 Tapi itu urutan nol atau lebih karakter. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, meskipun, terlihat agak aneh. 169 00:08:43,650 --> 00:08:46,290 Tapi itu hanya berarti sesuatu sederhana untuk komputer. 170 00:08:46,290 --> 00:08:48,060 Apa backslash-n? 171 00:08:48,060 --> 00:08:48,570 Baris baru. 172 00:08:48,570 --> 00:08:52,490 Jadi itu hanya urutan khusus karakter bahwa dunia telah memutuskan 173 00:08:52,490 --> 00:08:56,880 berarti menempatkan satu baris di sana, karena compiler akan benar-benar mendapatkan 174 00:08:56,880 --> 00:09:02,280 bingung, biasanya, jika Anda, sangat dimengerti, tapi tidak benar, hanya 175 00:09:02,280 --> 00:09:04,570 mulai menekan Enter untuk menempatkan baris baru dalam kode Anda. 176 00:09:04,570 --> 00:09:07,150 Anda harus menjadi sedikit lebih eksplisit dengan tanda-n. 177 00:09:07,150 --> 00:09:10,540 >> Dan kita akan melihat ada beberapa lainnya seperti pola untuk karakter khusus. 178 00:09:10,540 --> 00:09:14,340 Misalnya, jika Anda ingin membiarkan Anda pikiran mengembara ke kasus sudut, 179 00:09:14,340 --> 00:09:18,080 mengira bahwa aku ingin mencetak kutip ganda pada layar untuk 180 00:09:18,080 --> 00:09:21,840 alasan apa pun, yang tampaknya untuk menjadi sedikit bermasalah, kan? 181 00:09:21,840 --> 00:09:24,990 Karena jika saya menempatkan kutipan ganda dalam tengah "halo, dunia," untuk apa pun 182 00:09:24,990 --> 00:09:30,120 Alasannya, mengapa yang tampaknya berpotensi bermasalah? 183 00:09:30,120 --> 00:09:32,180 Rusak string. 184 00:09:32,180 --> 00:09:34,700 >> Compiler hanya sebuah program. 185 00:09:34,700 --> 00:09:37,210 Sebuah program seperti compiler hanya akan untuk membaca atas kode Anda ke bawah, 186 00:09:37,210 --> 00:09:37,990 kiri ke kanan. 187 00:09:37,990 --> 00:09:41,850 Dan jika melihat tiga tanda kutip ganda sebagai gantinya dua, itu tidak akan tahu 188 00:09:41,850 --> 00:09:45,210 jika Anda berarti bahwa hal ke kiri harus string, atau hal untuk 189 00:09:45,210 --> 00:09:46,570 hak, atau semuanya. 190 00:09:46,570 --> 00:09:50,560 Ini ambigu, dan jadi apa khas compiler akan lakukan hanya panik, 191 00:09:50,560 --> 00:09:53,710 dan memberikan beberapa pesan kesalahan, dan membuat Anda mengatasi masalah ini. 192 00:09:53,710 --> 00:09:58,120 >> Jadi, mengingat bahwa backslash-n berarti baru line, apa yang akan naluri Anda sekarang 193 00:09:58,120 --> 00:10:02,610 mulai jika Anda ingin menyertakan sesuatu yang anomali seperti ganda 194 00:10:02,610 --> 00:10:06,210 mengutip dalam ini jika tidak dikutip String? 195 00:10:06,210 --> 00:10:07,640 Backslash-kutipan ganda. 196 00:10:07,640 --> 00:10:09,630 Dan jadi kita akan melihat ini jenis pola juga. 197 00:10:09,630 --> 00:10:12,490 >> Jika Anda ingin melakukan sesuatu yang sedikit aneh, Anda akan menemukan bahwa 198 00:10:12,490 --> 00:10:15,060 solusi sering mengikuti pola, dan backslash 199 00:10:15,060 --> 00:10:17,150 menunjukkan sebuah urutan escape. 200 00:10:17,150 --> 00:10:20,320 Dan itu hanya berarti sesuatu yang istimewa bahwa kita perlu untuk mewakili dalam 201 00:10:20,320 --> 00:10:21,060 cara yang berbeda. 202 00:10:21,060 --> 00:10:23,830 Adapun bagaimana Anda mewakili backslash, baik, kita akan 203 00:10:23,830 --> 00:10:24,550 kembali ke itu. 204 00:10:24,550 --> 00:10:26,930 Tapi jawabannya juga, sebenarnya agak jelas. 205 00:10:26,930 --> 00:10:31,080 >> Sekarang, mari kita memperkenalkan beberapa lainnya konstruksi pemrograman 206 00:10:31,080 --> 00:10:31,915 Anda lihat di Scratch. 207 00:10:31,915 --> 00:10:34,790 Anda mungkin pernah diambil untuk diberikan sudah jika Anda sudah terjun ke 208 00:10:34,790 --> 00:10:36,060 masalah set 0. 209 00:10:36,060 --> 00:10:40,950 Tapi mari kita sekarang memperkenalkan sintaks di C untuk ini jika tidak cukup intuitif 210 00:10:40,950 --> 00:10:42,300 ide, setidaknya beberapa dari mereka. 211 00:10:42,300 --> 00:10:45,570 >> Jadi gagasan ini kondisi atau cabang, padahal sebelumnya kita 212 00:10:45,570 --> 00:10:49,330 diwakili dengan kode yang tampak seperti ini di sebelah kiri pada Scratch - 213 00:10:49,330 --> 00:10:52,200 jika x kurang dari y, kemudian berkata begitu - 214 00:10:52,200 --> 00:10:56,760 bukannya sekarang di C - biarkan aku mengasah dalam pada kasus yang paling sederhana - 215 00:10:56,760 --> 00:11:01,235 kita hanya akan mengatakan, jika, buka kurung, sesuatu itu benar - a 216 00:11:01,235 --> 00:11:04,190 Ekspresi Boolean akan pergi di mana saya telah mengatakan, kondisi - 217 00:11:04,190 --> 00:11:08,170 kurung tutup, maka jangan apa dalam kurung kurawal tersebut. 218 00:11:08,170 --> 00:11:11,020 >> Jadi di sini, juga, kurung kurawal adalah jenis seperti Scratch ini 219 00:11:11,020 --> 00:11:12,460 U-berbentuk potongan puzzle. 220 00:11:12,460 --> 00:11:14,890 Lakukan apa yang ada di dalam kurung kurawal tersebut. 221 00:11:14,890 --> 00:11:16,790 Dalam kasus ini, slash slash. 222 00:11:16,790 --> 00:11:19,720 Dan melihat ini adalah maju slash, bukan backslash. 223 00:11:19,720 --> 00:11:21,440 Garis miring, garis miring, bagi mereka yang sudah diprogram 224 00:11:21,440 --> 00:11:23,370 sebelumnya, hanya berarti - 225 00:11:23,370 --> 00:11:24,190 itu hanya komentar. 226 00:11:24,190 --> 00:11:26,630 Sebuah komentar bukan garis kode, per se. 227 00:11:26,630 --> 00:11:30,200 Ini adalah garis Inggris yang Anda, yang manusia, telah menulis kepada diri sendiri untuk 228 00:11:30,200 --> 00:11:33,540 mungkin mengingatkan Anda untuk melakukan sesuatu, untuk menjelaskan kepada diri sendiri, untuk menjelaskan kepada 229 00:11:33,540 --> 00:11:35,260 orang lain, apa kode Anda lakukan. 230 00:11:35,260 --> 00:11:37,050 Ini hanya komentar deskriptif. 231 00:11:37,050 --> 00:11:40,880 >> Sekarang, tentu saja, kita dapat memiliki dua arah garpu di jalan hanya dengan melakukan ini, 232 00:11:40,880 --> 00:11:43,930 garpu tiga cara jalan dengan melakukan ini, dan jika Anda terus ini 233 00:11:43,930 --> 00:11:47,570 pola, Anda dapat memiliki empat arah, lima-arah, enam arah garpu di jalan jika 234 00:11:47,570 --> 00:11:50,150 Anda perlu menangani, memang, bahwa banyak kondisi. 235 00:11:50,150 --> 00:11:52,010 Dan kemudian melihat paralelisme di sini - 236 00:11:52,010 --> 00:11:55,070 if (kondisi), else if (kondisi), dan satu-satunya yang sedikit 237 00:11:55,070 --> 00:11:58,010 aneh adalah yang terakhir, yang hanya yang lain. 238 00:11:58,010 --> 00:12:01,170 Tapi sekali lagi, ini identik, konseptual, apa yang kami lakukan 239 00:12:01,170 --> 00:12:04,690 sudah, meskipun sintaks akan mengambil sedikit membiasakan diri. 240 00:12:04,690 --> 00:12:07,730 >> Sekarang, dalam contoh ini, ada beberapa sintaks aneh lainnya. 241 00:12:07,730 --> 00:12:11,220 Kita melihat printf lagi, kurung buka, dan kurung tutup. 242 00:12:11,220 --> 00:12:13,190 Dan dalam ada string yang dikutip. 243 00:12:13,190 --> 00:12:17,060 Tanda kurung, dalam konteks printf, pergi di sebelah kiri 244 00:12:17,060 --> 00:12:18,160 dan hak apa? 245 00:12:18,160 --> 00:12:22,190 Apa yang kita jelaskan bahwa dikutip string sebagai lebih umum? 246 00:12:22,190 --> 00:12:23,320 >> Jadi argumen. 247 00:12:23,320 --> 00:12:26,620 Setiap kali Anda memiliki fungsi, seperti printf, dan kemudian paren terbuka dan 248 00:12:26,620 --> 00:12:30,330 paren dekat dan sesuatu di dalam itu, apakah itu string, atau 249 00:12:30,330 --> 00:12:34,420 integer, atau apa pun, hal dalam antara kurung disebut 250 00:12:34,420 --> 00:12:35,110 argumen. 251 00:12:35,110 --> 00:12:37,910 >> Dan argumen hanya mempengaruhi perilaku fungsi ini. 252 00:12:37,910 --> 00:12:39,990 Dalam kasus ini, itu cukup jelas bagaimana. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 Dan printf akan mencetak persis seperti itu. 255 00:12:47,720 --> 00:12:51,590 Karena pasti, tahun lalu orang yang dilaksanakan printf tidak tahu 256 00:12:51,590 --> 00:12:55,000 apa yang kita penerus manusia yang akan menggunakan printf untuk. 257 00:12:55,000 --> 00:12:58,610 Jadi itu sebabnya argumen yang ada, untuk mempengaruhi perilaku setelah fungsi ini 258 00:12:58,610 --> 00:12:59,450 telah ditulis. 259 00:12:59,450 --> 00:13:00,780 >> Sekarang, ekspresi Boolean. 260 00:13:00,780 --> 00:13:02,470 Kami telah melihat ini sebelumnya di Scratch. 261 00:13:02,470 --> 00:13:06,680 Ternyata di C Anda juga bisa "atau" mereka bersama-sama, sehingga untuk berbicara. 262 00:13:06,680 --> 00:13:10,930 Dua garis vertikal berarti bahwa blok ini kode, ini melakukan hal ini, akan 263 00:13:10,930 --> 00:13:15,350 mengeksekusi jika kondisi pertama benar atau kondisi kedua benar. 264 00:13:15,350 --> 00:13:17,710 Dan meskipun Anda mungkin tidak dilakukan Scratch ini, Anda memang bisa 265 00:13:17,710 --> 00:13:20,580 melakukan hal ini dalam Scratch, Dan Anda juga dapat mengekspresikan diri secara berbeda - 266 00:13:20,580 --> 00:13:25,300 jika kondisi pertama dan kedua kondisi adalah benar, maka jangan apa 267 00:13:25,300 --> 00:13:27,160 dalam kurung kurawal. 268 00:13:27,160 --> 00:13:31,210 >> Dan hanya sebagai samping, alasan itu sebuah ampersand ganda dan ganda 269 00:13:31,210 --> 00:13:34,610 vertikal, kita akan melihat pada akhirnya bahwa sebuah bar vertikal tunggal dan 270 00:13:34,610 --> 00:13:38,710 ampersand tunggal benar-benar memiliki yang berbeda makna dalam C. Jadi untuk saat ini, 271 00:13:38,710 --> 00:13:41,840 bahwa duplikasi simbol disengaja. 272 00:13:41,840 --> 00:13:45,070 >> Jadi mari kita memperkenalkan, singkat, ini sedikit lain dari sintaks. 273 00:13:45,070 --> 00:13:48,940 Ini tidak cukup membawa ke Scratch, tapi saya menyatakan bahwa saya bisa 274 00:13:48,940 --> 00:13:55,190 mengimplementasikan gagasan jika yang lain, jika lain, jika lain, jika pernyataan lain menggunakan 275 00:13:55,190 --> 00:13:56,760 sesuatu yang disebut pernyataan switch. 276 00:13:56,760 --> 00:14:00,820 Dan satu-satunya alasan ini benar-benar ada adalah untuk hanya memberikan, programmer, sebuah 277 00:14:00,820 --> 00:14:05,470 cara yang sedikit berbeda memecahkan beberapa Masalahnya, meskipun secara logis 278 00:14:05,470 --> 00:14:07,340 tidak memberikan kemampuan baru. 279 00:14:07,340 --> 00:14:08,530 >> Maksud saya ini. 280 00:14:08,530 --> 00:14:13,330 Ketika Anda mengatakan switch, dan kemudian spasi, dan kemudian sepasang kurung, di dalam 281 00:14:13,330 --> 00:14:14,570 yang pergi ekspresi - 282 00:14:14,570 --> 00:14:18,010 dan ini mungkin sedikit tidak jelas pada awalnya, tapi ini bukan sebuah argumen, 283 00:14:18,010 --> 00:14:20,680 secara teknis, karena switch bukan fungsi. 284 00:14:20,680 --> 00:14:24,230 Jadi untuk sekarang, hanya mengasumsikan bahwa kita menggunakan kurung di tempat yang berbeda 285 00:14:24,230 --> 00:14:25,250 untuk alasan yang berbeda. 286 00:14:25,250 --> 00:14:29,310 >> Jadi saklar pada ekspresi berarti saya bisa menempatkan variabel di dalam orang-orang 287 00:14:29,310 --> 00:14:31,350 kurung mana dikatakan ekspresi. 288 00:14:31,350 --> 00:14:33,090 Dan kemudian jika variabel - 289 00:14:33,090 --> 00:14:35,400 kira itu disebut x, dan itu hanya sebuah integer - 290 00:14:35,400 --> 00:14:38,900 Saya kemudian bisa menghitung dalam slide saya di sini sesuatu seperti ini. 291 00:14:38,900 --> 00:14:41,690 Jika x adalah variabel saya, dan saya ingin melakukan sesuatu jika x 292 00:14:41,690 --> 00:14:43,480 sama dengan 1, saya bisa melakukan itu. 293 00:14:43,480 --> 00:14:46,660 >> Jika saya malah ingin melakukan sesuatu jika x adalah 2, saya bisa melakukan itu. 294 00:14:46,660 --> 00:14:50,390 Lain, jika saya ingin melakukan sesuatu yang lain seluruhnya, saya dapat memiliki default kasus di 295 00:14:50,390 --> 00:14:52,750 hal ini saya melakukan hal ini lain. 296 00:14:52,750 --> 00:14:58,730 Jadi dalam arti bahwa, itu setara dengan jika x sama sama dengan 1, lain jika yang lain, 297 00:14:58,730 --> 00:15:01,150 tapi saya menyebutkan ini sekarang hanya karena kita akan melihatnya lagi. 298 00:15:01,150 --> 00:15:03,720 Tetapi untuk sekarang, hanya tahu bahwa itu ada. 299 00:15:03,720 --> 00:15:04,220 >> Baik. 300 00:15:04,220 --> 00:15:07,660 Jadi ini pasangan terakhir yang sedikit lebih kompleks pada pandangan pertama, tetapi mereka 301 00:15:07,660 --> 00:15:09,385 sesuatu yang cukup mudah. 302 00:15:09,385 --> 00:15:14,410 A untuk loop dalam C adalah serangkaian kode yang hanya melakukan sesuatu lagi dan 303 00:15:14,410 --> 00:15:15,330 lagi dan lagi. 304 00:15:15,330 --> 00:15:17,590 Dan satu-satunya hal yang mengganggu tentang hal itu adalah itu adalah bahwa itu sedikit samar 305 00:15:17,590 --> 00:15:21,380 untuk mengekspresikan diri dalam siklus pola, tetapi dunia standar pada 306 00:15:21,380 --> 00:15:22,450 dengan cara berikut. 307 00:15:22,450 --> 00:15:25,760 >> Bila Anda menggunakan untuk loop, Anda punya sepasang kurung lagi. 308 00:15:25,760 --> 00:15:27,570 Dan melihat dua titik koma di sana. 309 00:15:27,570 --> 00:15:34,380 Kedua titik koma terpisah tiga ekspresi yang berbeda dalam dari 310 00:15:34,380 --> 00:15:35,020 kurung. 311 00:15:35,020 --> 00:15:37,170 Salah satunya adalah yang disebut inisialisasi. 312 00:15:37,170 --> 00:15:38,830 Salah satunya adalah kondisi yang disebut. 313 00:15:38,830 --> 00:15:40,210 Dan satu yang disebut update. 314 00:15:40,210 --> 00:15:43,240 >> Memandang secara abstrak, ini adalah benar-benar tidak jelas, jadi mari kita lihat 315 00:15:43,240 --> 00:15:44,630 pada contoh konkret. 316 00:15:44,630 --> 00:15:46,720 Dalam Scratch kami memiliki blok ulangi. 317 00:15:46,720 --> 00:15:50,670 Dan blok ini mengatakan ulangi 10 kali, katakanlah "Hello, world." Mari saya klaim untuk 318 00:15:50,670 --> 00:15:53,810 sekarang, dan kami akan kembali ke ini, dan ini juga, akan mendapatkan lebih akrab bagi 319 00:15:53,810 --> 00:15:57,345 Anda sebelum lama, setara C kode bisa dikatakan ini - 320 00:15:57,345 --> 00:16:02,320 untuk pernyataan dan spasi, sepasang kurung, perhatikan titik koma di 321 00:16:02,320 --> 00:16:05,730 di sana, yang memisahkan tiga berbeda hal, inisialisasi, yang 322 00:16:05,730 --> 00:16:07,320 kondisi, dan update. 323 00:16:07,320 --> 00:16:08,840 >> Dan mengambil menebak apa yang pertama adalah melakukan. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 Dalam istilah awam yang kasar, apa bahwa melakukan bagi kita, mungkin? 326 00:16:15,120 --> 00:16:15,590 Jadi ya. 327 00:16:15,590 --> 00:16:19,630 Ini mendeklarasikan variabel yang disebut i, dan itu memberi nilai apa itu? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Jadi itu menciptakan sebuah variabel yang disebut i, menyimpan nilai 0 di dalamnya. 330 00:16:24,280 --> 00:16:26,420 Itulah yang disebut inisialisasi. 331 00:16:26,420 --> 00:16:29,360 >> Baiklah, sekarang aku mengaku sebelum bahwa hal menengah, i 332 00:16:29,360 --> 00:16:31,760 <10, adalah kondisi. 333 00:16:31,760 --> 00:16:32,730 Jadi apa yang dilakukan? 334 00:16:32,730 --> 00:16:36,560 Nah, apa untuk loop tidak ketika program dengan untuk loop dijalankan, adalah 335 00:16:36,560 --> 00:16:41,050 setiap kali komputer berjalan melalui lingkaran ini, atas ke bawah, atas ke 336 00:16:41,050 --> 00:16:43,740 bawah, seperti kalian lakukan ketika menghitung diri dan duduk, 337 00:16:43,740 --> 00:16:47,090 lagi dan lagi dan lagi, komputer akan 338 00:16:47,090 --> 00:16:48,560 untuk memeriksa kondisi itu. 339 00:16:48,560 --> 00:16:51,140 Dan jika saya kurang dari 10, itu akan melakukannya lagi. 340 00:16:51,140 --> 00:16:53,100 Jika saya kurang dari 10, itu akan melakukannya lagi. 341 00:16:53,100 --> 00:16:55,030 Jika i adalah kurang dari sepuluh, itu akan melakukannya lagi. 342 00:16:55,030 --> 00:16:57,330 Sehingga tampaknya menunjukkan bahwa mudah-mudahan saya berubah. 343 00:16:57,330 --> 00:16:59,010 Jika tidak, kita akan memiliki loop tak terbatas. 344 00:16:59,010 --> 00:17:02,590 Dan memang, saya berubah, karena Hal terakhir setelah titik koma ada 345 00:17:02,590 --> 00:17:05,569 adalah sintaks agak samar i + +. 346 00:17:05,569 --> 00:17:07,630 Tapi bagi anda yang pernah melakukan ini sebelumnya, itu hanya berarti 347 00:17:07,630 --> 00:17:08,609 cukup sederhana apa? 348 00:17:08,609 --> 00:17:09,730 >> MAHASISWA: [interposing SUARA]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID Malan: Tambahkan 1 ke i. 350 00:17:10,740 --> 00:17:11,819 Kenaikan i. 351 00:17:11,819 --> 00:17:13,910 Jadi kita melihat teka-teki Scratch sepotong untuk itu, sebenarnya. 352 00:17:13,910 --> 00:17:18,230 Ini tidak terlihat seperti i + +, tapi itu hanya berarti, cukup sederhana, kenaikan 353 00:17:18,230 --> 00:17:24,040 nilai i oleh 1 setiap kali Anda melakukan hal ini. 354 00:17:24,040 --> 00:17:26,910 Jadi secara harfiah, Anda mulai dengan menginisialisasi i ke 0. 355 00:17:26,910 --> 00:17:29,520 Anda kemudian memeriksa kondisi Anda. 356 00:17:29,520 --> 00:17:31,070 Adalah 0 kurang dari 10? 357 00:17:31,070 --> 00:17:31,730 Ya. 358 00:17:31,730 --> 00:17:32,910 Kami pergi melalui loop. 359 00:17:32,910 --> 00:17:35,150 >> Hal berikutnya yang saya mengklaim komputer akan lakukan adalah itu akan 360 00:17:35,150 --> 00:17:35,910 untuk kenaikan i. 361 00:17:35,910 --> 00:17:37,080 Jadi saya sekarang 1. 362 00:17:37,080 --> 00:17:37,940 Ia memeriksa kondisi. 363 00:17:37,940 --> 00:17:39,290 Adalah 1 kurang dari 10? 364 00:17:39,290 --> 00:17:39,930 Tentu saja. 365 00:17:39,930 --> 00:17:41,030 Jadi tidak lagi. 366 00:17:41,030 --> 00:17:43,580 Kemudian increment i + + untuk 2. 367 00:17:43,580 --> 00:17:44,610 Apakah 2 kurang dari 10? 368 00:17:44,610 --> 00:17:45,230 Ya. 369 00:17:45,230 --> 00:17:46,670 Dan lagi dan lagi dan lagi. 370 00:17:46,670 --> 00:17:50,070 Dan akhirnya, karena plus-plussing, kita bisa i sama dengan 10. 371 00:17:50,070 --> 00:17:51,675 10 kurang dari 10? 372 00:17:51,675 --> 00:17:52,990 Yah, jelas tidak. 373 00:17:52,990 --> 00:17:55,320 Dan itu adalah titik di mana untuk loop hanya berhenti. 374 00:17:55,320 --> 00:17:58,320 Dan jika Anda memiliki lebih kode pada Layar bawah, komputer 375 00:17:58,320 --> 00:18:01,620 hasil untuk menjalankan kode yang sebaliknya. 376 00:18:01,620 --> 00:18:05,380 >> Jadi sekali lagi, meskipun ini akan terlihat dan merasa sedikit aneh pada 377 00:18:05,380 --> 00:18:07,830 pertama, tentu bagi anda yang tidak pernah diprogram sebelumnya, 378 00:18:07,830 --> 00:18:11,640 harfiah mengurangi konseptual untuk apa jika tidak sangat 379 00:18:11,640 --> 00:18:14,330 puzzle sederhana potongan dalam Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Baiklah, aku berjanji bahwa akan ada menjadi analog lainnya di Scratch. 381 00:18:19,130 --> 00:18:20,060 Ada satu ini juga. 382 00:18:20,060 --> 00:18:21,700 Dan kami melihat ini sebentar terakhir kali. 383 00:18:21,700 --> 00:18:23,530 Tapi ingat selamanya blok di Awal? 384 00:18:23,530 --> 00:18:25,490 Itu hanya melakukan sesuatu selamanya? 385 00:18:25,490 --> 00:18:27,470 Saya mengklaim bahwa Anda bisa menerapkan ini dengan cara ini. 386 00:18:27,470 --> 00:18:29,740 Dan Anda benar-benar dapat menerapkan ini dalam banyak cara yang berbeda. 387 00:18:29,740 --> 00:18:34,260 >> Tapi loop sementara hanya berbeda cara C untuk mengekspresikan diri. 388 00:18:34,260 --> 00:18:37,080 Pada akhir hari, Anda tidak dapat melakukan apa-apa dengan while loop yang Anda 389 00:18:37,080 --> 00:18:38,360 tidak bisa dengan untuk loop. 390 00:18:38,360 --> 00:18:41,430 Jadi mereka pada akhir hari fungsional sama. 391 00:18:41,430 --> 00:18:43,840 Tetapi memungkinkan Anda untuk mengekspresikan diri sedikit berbeda dalam 392 00:18:43,840 --> 00:18:44,850 dengan cara berikut. 393 00:18:44,850 --> 00:18:49,720 >> Dengan while loop, itu apa yang ada di kurung yang diperiksa lagi dan 394 00:18:49,720 --> 00:18:51,050 lagi dan lagi. 395 00:18:51,050 --> 00:18:55,100 Dan segera setelah ekspresi yang palsu, maka loop berhenti mengeksekusi, 396 00:18:55,100 --> 00:18:57,890 dan komputer hasil untuk menjalankan apapun kode lain Anda 397 00:18:57,890 --> 00:18:59,230 ada di file Anda. 398 00:18:59,230 --> 00:19:02,180 >> Tapi apa yang menarik di sini adalah bahwa saya benar-benar diketik benar. 399 00:19:02,180 --> 00:19:06,680 Dan benar adalah jenis nilai Boolean, nilai benar atau salah. 400 00:19:06,680 --> 00:19:09,750 Jadi benar pernah bisa menjadi false jika aku sudah benar-benar 401 00:19:09,750 --> 00:19:11,970 keras-kode ke dalam program saya? 402 00:19:11,970 --> 00:19:12,470 Jadi tidak ada. 403 00:19:12,470 --> 00:19:13,730 Ini agak aneh bahwa saya melakukan ini. 404 00:19:13,730 --> 00:19:15,190 Tapi yang benar adalah benar. 405 00:19:15,190 --> 00:19:16,320 Tidak ada plus-plussing. 406 00:19:16,320 --> 00:19:17,820 Tidak ada penggunaan variabel di sini. 407 00:19:17,820 --> 00:19:22,740 Jadi karena saya keras-kode sementara benar, ini loop selalu akan mengevaluasi 408 00:19:22,740 --> 00:19:24,090 lagi dan lagi dan lagi. 409 00:19:24,090 --> 00:19:27,660 >> Jadi berapa kali adalah halo dunia akan mencetak pada layar? 410 00:19:27,660 --> 00:19:28,170 Selamanya. 411 00:19:28,170 --> 00:19:31,980 Jumlah tak terbatas kali sampai meninggal baterai atau beberapa eksternal lainnya 412 00:19:31,980 --> 00:19:32,730 peristiwa terjadi. 413 00:19:32,730 --> 00:19:35,880 Jadi ini mungkin bukan program terbaik untuk menulis, karena jika pengguna 414 00:19:35,880 --> 00:19:38,660 tidak pernah bisa berhenti program Anda, itu mungkin tidak apa yang Anda inginkan. 415 00:19:38,660 --> 00:19:41,070 >> Tapi kadang-kadang, program harus memiliki loop tak terbatas. 416 00:19:41,070 --> 00:19:44,050 Misalnya, jika komputer Anda memiliki Jam di atasnya, itu pasti akan 417 00:19:44,050 --> 00:19:48,130 baik jika waktu Anda itu tidak terus mengupdate sendiri selamanya, meskipun sekali 418 00:19:48,130 --> 00:19:50,500 kedua atau setelah satu menit atau sesuatu seperti itu. 419 00:19:50,500 --> 00:19:53,690 Loop sehingga bahkan tak terbatas memiliki tempat mereka. 420 00:19:53,690 --> 00:19:54,360 >> Baik. 421 00:19:54,360 --> 00:19:55,190 Terakhir, satu ini. 422 00:19:55,190 --> 00:19:57,770 Dan yang satu ini sedikit berbeda fungsional, dan kami akan kembali ke 423 00:19:57,770 --> 00:19:59,460 ini mungkin dalam Pset 1. 424 00:19:59,460 --> 00:20:02,370 Tapi ada jenis lain dari lingkaran disebut lakukan saat lingkaran. 425 00:20:02,370 --> 00:20:07,100 Dan satu-satunya perbedaan di sini antara lakukan saat lingkaran dan, katakanlah, sementara loop, 426 00:20:07,100 --> 00:20:11,120 adalah bahwa kondisi tersebut akan diperiksa tidak sebelum Anda mengeksekusi kode, tapi setelah 427 00:20:11,120 --> 00:20:12,080 Anda mengeksekusi kode. 428 00:20:12,080 --> 00:20:15,380 Jadi di atas untuk sementara lingkaran, sedangkan lakukan saat 429 00:20:15,380 --> 00:20:16,560 cek di bagian bawah. 430 00:20:16,560 --> 00:20:21,370 >> Dan ini hanya berarti bahwa loop sementara biasanya akan mengeksekusi kali 431 00:20:21,370 --> 00:20:24,630 atau waktu kurang dari loop sementara? 432 00:20:24,630 --> 00:20:30,810 Berpotensi lebih kali, karena melakukan while jelas mengatakan melakukan hal ini, 433 00:20:30,810 --> 00:20:34,600 hanya setelah titik mana Anda memeriksa jika dalam kondisi 434 00:20:34,600 --> 00:20:35,980 kurung adalah benar. 435 00:20:35,980 --> 00:20:37,940 >> Jadi kita akan melihat ini lagi mungkin dalam Pset 1. 436 00:20:37,940 --> 00:20:41,150 Jika Anda pernah ingin melakukan sesuatu di setidaknya sekali dan kemudian mungkin lagi 437 00:20:41,150 --> 00:20:43,350 kali, ini adalah baik membangun untuk digunakan. 438 00:20:43,350 --> 00:20:46,970 Tapi sementara loop, sebaliknya, akan memeriksa kondisi pertamanya. 439 00:20:46,970 --> 00:20:50,660 Dan itu untuk loop di C, jangan sementara, sementara, dan untuk loop. 440 00:20:50,660 --> 00:20:54,700 Dan lagi, mereka memetakan cukup baik kembali untuk Gores, kecuali yang satu ini tidak 441 00:20:54,700 --> 00:20:57,350 cukup memiliki analog yang sama dalam Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Nah, bagaimana, sekarang, variabel? 443 00:20:58,880 --> 00:21:02,600 Jadi ini adalah bagaimana saya menyatakan variabel sintaksis hari lain. 444 00:21:02,600 --> 00:21:06,440 Aku punya int, yang saya mengklaim adalah bilangan bulat. 445 00:21:06,440 --> 00:21:09,690 Kemudian aku disebut variabel counter, dan kemudian titik koma. 446 00:21:09,690 --> 00:21:11,070 Jadi apa baris kode lakukan? 447 00:21:11,070 --> 00:21:14,540 Hal ini, cukup sederhana, menyatakan variabel - 448 00:21:14,540 --> 00:21:17,940 yaitu, meminta komputer, beri saya beberapa memori, memberi saya beberapa bit - in 449 00:21:17,940 --> 00:21:19,450 yang saya dapat menyimpan apa? 450 00:21:19,450 --> 00:21:20,300 Int. 451 00:21:20,300 --> 00:21:23,570 Dan titik koma hanya berarti akhir baris kode. 452 00:21:23,570 --> 00:21:25,500 >> Sekarang, baris kedua mungkin cukup ditebak. 453 00:21:25,500 --> 00:21:29,710 Apa counter = 0; lakukan? 454 00:21:29,710 --> 00:21:31,690 Ini menugaskan 0 untuk melawan. 455 00:21:31,690 --> 00:21:33,470 Dan jadi ini adalah hal lain yang sedikit mengganggu 456 00:21:33,470 --> 00:21:34,540 dibandingkan, katakanlah, aljabar. 457 00:21:34,540 --> 00:21:39,110 Sedangkan dalam aljabar, tanda sama berarti sama, di sini, di C, sama 458 00:21:39,110 --> 00:21:40,470 Tanda berarti tugas. 459 00:21:40,470 --> 00:21:45,380 Jadi itu berarti menempatkan apa yang ada di sebelah kanan menjadi apa yang ada di sebelah kiri. 460 00:21:45,380 --> 00:21:49,030 Dan kita akan melihat simbol lain, sama sama, ketika kita ingin benar-benar menguji 461 00:21:49,030 --> 00:21:50,570 untuk kualitas, agak mengganggu. 462 00:21:50,570 --> 00:21:52,590 >> Tapi ini sedikit tidak efisien. 463 00:21:52,590 --> 00:21:55,090 Ini agak menjengkelkan yang saya miliki untuk mendeklarasikan variabel dan 464 00:21:55,090 --> 00:21:56,110 kemudian berikan nilai. 465 00:21:56,110 --> 00:21:59,380 Jadi C sebenarnya memungkinkan kita menyederhanakan ini dan hanya melakukan semuanya sekaligus. 466 00:21:59,380 --> 00:22:01,330 Anda dapat mendeklarasikan variabel di sebelah kiri. 467 00:22:01,330 --> 00:22:04,590 Anda masih bisa melakukan tugas pada tepat dengan menempatkan bahwa tanda sama dalam 468 00:22:04,590 --> 00:22:05,030 tengah. 469 00:22:05,030 --> 00:22:08,740 Jadi pada akhir hari, dua ini setara, tapi yang satu ini, terus terang, 470 00:22:08,740 --> 00:22:11,840 mungkin adalah kebiasaan yang lebih baik untuk masuk ke hanya karena sedikit kurang 471 00:22:11,840 --> 00:22:15,040 kode, itu sedikit lebih mudah untuk dibaca, dan hanya mengencangkan 472 00:22:15,040 --> 00:22:17,470 kode Anda, sehingga untuk berbicara. 473 00:22:17,470 --> 00:22:22,120 >> Setiap pertanyaan sejauh pada loop, pada variabel, pada kondisi, pada 474 00:22:22,120 --> 00:22:27,001 Boolean, baik secara teknis atau konseptual? 475 00:22:27,001 --> 00:22:28,010 Baik. 476 00:22:28,010 --> 00:22:30,690 Jadi sekarang satu ini selanjutnya mendapat sedikit lebih menarik. 477 00:22:30,690 --> 00:22:34,790 Dan ini adalah contoh yang saya memasang terakhir waktu itu hanya memetakan contoh Scratch 478 00:22:34,790 --> 00:22:35,820 ke C. 479 00:22:35,820 --> 00:22:36,580 >> Jadi fungsi. 480 00:22:36,580 --> 00:22:38,110 Dalam istilah awam, apa fungsi? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Harus lebih berani dengan jawaban Anda. 483 00:22:44,350 --> 00:22:45,020 Apa fungsi? 484 00:22:45,020 --> 00:22:46,320 >> SISWA: Apakah sesuatu. 485 00:22:46,320 --> 00:22:46,780 >> DAVID Malan: Apa itu? 486 00:22:46,780 --> 00:22:48,000 >> SISWA: Apakah sesuatu. 487 00:22:48,000 --> 00:22:48,710 >> DAVID Malan: Apakah sesuatu. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Kita akan mulai dari sana. 490 00:22:49,590 --> 00:22:51,270 Jadi fungsi melakukan sesuatu. 491 00:22:51,270 --> 00:22:55,160 Jadi itu adalah bagian dari kode yang dasarnya dilaksanakan di tempat lain yang 492 00:22:55,160 --> 00:22:56,620 memang melakukan sesuatu. 493 00:22:56,620 --> 00:23:00,180 Sekarang, apa yang menarik tentang fungsi adalah bahwa hal itu dapat mengambil masukan, 494 00:23:00,180 --> 00:23:02,710 dan dapat menghasilkan output. 495 00:23:02,710 --> 00:23:05,090 Dan mari kita sebenarnya mengambil lihat ini. 496 00:23:05,090 --> 00:23:09,030 >> Jadi orang di balik tirai disengaja saat yang lalu. 497 00:23:09,030 --> 00:23:10,320 Di sini kita memiliki sebuah meja. 498 00:23:10,320 --> 00:23:13,010 Tapi anggaplah bahwa ini benar-benar merupakan sebuah kotak besar. 499 00:23:13,010 --> 00:23:14,940 Jadi ini adalah sebuah kotak hitam yang disebut. 500 00:23:14,940 --> 00:23:19,800 Dan secara umum, dalam desain, di dalam komputer ilmu pengetahuan, kotak hitam hanya mengacu pada 501 00:23:19,800 --> 00:23:22,510 potongan fungsionalitas bahwa seseorang telah menerapkan, dan Anda tidak 502 00:23:22,510 --> 00:23:26,140 tentu tahu atau peduli bagaimana hal itu dilaksanakan di bawah tenda. 503 00:23:26,140 --> 00:23:28,960 Anda hanya peduli bahwa kotak hitam ini, yang sekarang kita akan mulai memanggil 504 00:23:28,960 --> 00:23:30,730 fungsi, melakukan sesuatu. 505 00:23:30,730 --> 00:23:34,710 >> Jadi, misalnya, jika kotak hitam ini pada tahap disini mewakili printf, sebuah 506 00:23:34,710 --> 00:23:38,040 fungsi, saya tahu dari contoh sebelumnya printf yang membutuhkan satu atau lebih 507 00:23:38,040 --> 00:23:40,910 argumen, dan yang pertama dari mereka argumen harus berupa string, seperti 508 00:23:40,910 --> 00:23:44,780 "Hello, world." Nah, jika saya orang menulis program, dan saya ingin 509 00:23:44,780 --> 00:23:50,460 menggunakan printf, I, misalnya, mungkin mengambil secarik kertas kosong di sini dan 510 00:23:50,460 --> 00:23:55,060 spidol hitam dan menulis di atasnya - 511 00:23:55,060 --> 00:23:56,580 Aku salah eja "dunia" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Jadi aku akan mengambil spidol hitam saya dan saya akan menulis, sebagai besar dan sebersih saya dapat di 514 00:24:04,220 --> 00:24:07,260 kertas ini, "halo, dunia," Dan sekarang saya klaim ini adalah argumen saya. 515 00:24:07,260 --> 00:24:09,740 Ini adalah string diwakili dengan selembar kertas putih. 516 00:24:09,740 --> 00:24:13,030 Dan masukan saya sekarang untuk fungsi printf akan menjadi ini. 517 00:24:13,030 --> 00:24:18,250 Jadi saya menelepon printf, melewati bahwa argumen sebagai masukan untuk itu. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> Dan sekarang, saya tidak tahu bagaimana orang yang menulis printf melakukannya tahun lalu, tapi 520 00:24:26,740 --> 00:24:31,110 Saya tahu dari dokumentasi yang tujuan dalam hidup adalah untuk mencetak apa yang saya 521 00:24:31,110 --> 00:24:34,410 berikan itu sebagai masukan. 522 00:24:34,410 --> 00:24:40,630 Dan, meskipun implementasi ini adalah tanpa sepengetahuan saya 523 00:24:40,630 --> 00:24:44,170 bawah kap mesin, sekarang Saya melihat, oh, hal itu dilakukan. 524 00:24:44,170 --> 00:24:45,740 Ini telah dicetak sesuatu di layar. 525 00:24:45,740 --> 00:24:49,070 Dan kini menguasai program, jika ada adalah lebih baris kode, akan 526 00:24:49,070 --> 00:24:51,070 kini telah kembali ke saya. 527 00:24:51,070 --> 00:24:52,290 Dan fakta bahwa Colton - 528 00:24:52,290 --> 00:24:55,370 memberkati hatinya, bersembunyi di sini di bawah sebuah meja di depan anda semua - 529 00:24:55,370 --> 00:24:59,530 disengaja dalam bahwa saya tidak tahu dan saya tidak peduli seberapa printf 530 00:24:59,530 --> 00:25:00,100 diimplementasikan. 531 00:25:00,100 --> 00:25:03,390 Aku hanya tahu, sekali lagi, dari yang dokumentasi, apa yang dilakukan dan bagaimana saya 532 00:25:03,390 --> 00:25:05,040 saya seharusnya menggunakannya. 533 00:25:05,040 --> 00:25:09,140 >> Sekarang, ingat bahwa printf bisa sedikit lebih canggih. 534 00:25:09,140 --> 00:25:12,220 Sekali lagi, kita hanya berbicara tentang setara Scratch itu Say blok. 535 00:25:12,220 --> 00:25:14,230 Tapi saya juga melakukan ini terakhir kali. 536 00:25:14,230 --> 00:25:17,270 Saya ingin membuat program halo saya sedikit lebih dinamis dan tidak hanya sulit 537 00:25:17,270 --> 00:25:19,740 Kode sesuatu seperti "dunia," dan pasti tidak sulit kode sesuatu 538 00:25:19,740 --> 00:25:22,520 sewenang-wenang seperti D-A-V-I-D ke dalam program. 539 00:25:22,520 --> 00:25:27,510 Saya ingin meminta pengguna untuk nya nama, dan kemudian melakukan sesuatu dengan 540 00:25:27,510 --> 00:25:29,720 string yang mereka sediakan. 541 00:25:29,720 --> 00:25:32,690 >> Jadi ada sesuatu yang sedikit berbeda di sini. printf, beberapa saat yang lalu, 542 00:25:32,690 --> 00:25:35,860 tidak, memang, melakukan sesuatu, tetapi tidak mengembalikan apa-apa bagi saya. 543 00:25:35,860 --> 00:25:36,020 Benar? 544 00:25:36,020 --> 00:25:38,910 Colton tidak menyerahkan apa-apa kembali, tidak ada selembar kertas. 545 00:25:38,910 --> 00:25:40,320 Ada hanya efek samping. 546 00:25:40,320 --> 00:25:44,510 Memberikan saya "hello, world" sebagai argumen ke Colton mengakibatkan 547 00:25:44,510 --> 00:25:48,420 efek samping dari sebuah kata, beberapa kata, muncul di layar. 548 00:25:48,420 --> 00:25:51,350 >> GetString, meskipun, adalah sedikit berbeda. GetString juga 549 00:25:51,350 --> 00:25:54,590 berfungsi, tetapi ia mengembalikan beberapa nilai. 550 00:25:54,590 --> 00:25:56,370 Ini tidak hanya memiliki efek samping estetika. 551 00:25:56,370 --> 00:26:00,230 Ini benar-benar memberi saya, orang menelepon atau menggunakan fungsi, 552 00:26:00,230 --> 00:26:01,320 sesuatu kembali. 553 00:26:01,320 --> 00:26:05,740 Jadi dalam hal ini, adalah GetString disebut dengan GetString terbuka 554 00:26:05,740 --> 00:26:07,510 paren, paren dekat. 555 00:26:07,510 --> 00:26:11,370 Apakah GetString, oleh karena itu, mengambil argumen atau masukan? 556 00:26:11,370 --> 00:26:12,340 Tidak, sepertinya tidak. 557 00:26:12,340 --> 00:26:14,460 Tujuannya dalam hidup adalah hanya untuk mendapatkan string. 558 00:26:14,460 --> 00:26:16,910 Ini tidak memerlukan lebih detail dari itu. 559 00:26:16,910 --> 00:26:20,430 Jadi biarkan aku pergi ke depan dan berpura-pura bahwa, lagi, kotak hitam ini tidak printf, 560 00:26:20,430 --> 00:26:25,160 tapi GetString, dan biarkan aku, orang menulis program ini, panggilan atau menggunakan 561 00:26:25,160 --> 00:26:29,720 getString dengan hanya menulis G-E-T-S-T-R-I-N-G, buka paren, dekat 562 00:26:29,720 --> 00:26:32,170 paren, GetString. 563 00:26:32,170 --> 00:26:36,920 >> Sekarang, saya tidak tahu bagaimana CS50 staf diimplementasikan GetString, tapi aku tahu bahwa 564 00:26:36,920 --> 00:26:41,240 jika saya menunggu cukup lama, ia akan melakukan nya hal di bawah kap mesin, mungkin menggunakan 565 00:26:41,240 --> 00:26:44,940 beberapa variabel, mungkin menggunakan beberapa kondisi, mungkin menggunakan beberapa loop, 566 00:26:44,940 --> 00:26:48,170 mungkin menggunakan beberapa fungsi, mungkin menggunakan - 567 00:26:48,170 --> 00:26:52,290 hanya mencoba untuk mengulur - mungkin menggunakan beberapa fitur pemrograman lain. 568 00:26:52,290 --> 00:26:55,350 Tapi kalau aku menunggu cukup lama - dalam kenyataannya, di komputer, hal ini terjadi 569 00:26:55,350 --> 00:26:56,270 super cepat - 570 00:26:56,270 --> 00:26:59,910 jika saya menunggu cukup lama, fungsi ini GetString akan mendapatkan string 571 00:26:59,910 --> 00:27:04,060 dari pengguna, yang mungkin mengetik keluar pada keyboard mereka, dan 572 00:27:04,060 --> 00:27:08,090 kemudian, ketika Anda GetString dilakukan semakin karakter-karakter dari user 573 00:27:08,090 --> 00:27:14,080 dan menyimpannya ke dalam string, yang fungsi, GetString, akan memiliki 574 00:27:14,080 --> 00:27:17,990 siap untuk saya beberapa keluaran yang saya akan mengambil dengan cara 575 00:27:17,990 --> 00:27:19,470 operator penugasan. 576 00:27:19,470 --> 00:27:25,390 >> Dan jika aku pergi, memang, menjadi output sini, Obosi memiliki murah hati 577 00:27:25,390 --> 00:27:29,900 berpartisipasi, tanpa mengetahui ini maju, dengan menulis namanya ke ini 578 00:27:29,900 --> 00:27:33,100 variabel, yang mewakili string. 579 00:27:33,100 --> 00:27:35,640 Sekarang, operator penugasan berarti, bahkan meskipun ini mungkin merasa sedikit 580 00:27:35,640 --> 00:27:38,790 berlebihan, aku benar-benar perlu untuk membuat salinan saya sendiri ini. 581 00:27:38,790 --> 00:27:40,700 Karena di sisi kiri side - whoops! - 582 00:27:40,700 --> 00:27:45,760 melihat bahwa pada dasarnya aku punya tali nama di sisi kiri. 583 00:27:45,760 --> 00:27:48,280 Jadi aku juga akan membuat salinan saya sendiri ini. 584 00:27:48,280 --> 00:27:50,990 Dan ini adalah sedikit kebohongan putih, karena kita akan melihat dalam satu atau dua pekan 585 00:27:50,990 --> 00:27:54,100 waktu itu string tidak benar-benar apa yang mereka tampaknya. 586 00:27:54,100 --> 00:27:56,700 >> Tetapi untuk sekarang, di sini adalah nilai kembali. 587 00:27:56,700 --> 00:28:00,160 Berikut ini adalah salinan saya sendiri setelah menggunakan operator penugasan. 588 00:28:00,160 --> 00:28:01,790 Dan sekarang, apa yang ingin saya lakukan selanjutnya? 589 00:28:01,790 --> 00:28:04,080 Kami sekarang memiliki kedua dua baris kode. 590 00:28:04,080 --> 00:28:05,640 Jadi sekarang saya ingin menelepon printf. 591 00:28:05,640 --> 00:28:08,500 Mari kita berpura-pura sekarang bahwa hitam box kembali lagi menjadi 592 00:28:08,500 --> 00:28:10,210 printf dan tidak GetString. 593 00:28:10,210 --> 00:28:12,200 >> Printf kali ini akan mengambil berapa banyak argumen? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Jadi lihat, itu seperti dua. 596 00:28:16,770 --> 00:28:18,860 Ada dua koma di sana, tapi salah satu koma, itu 597 00:28:18,860 --> 00:28:20,220 dalam tanda kutip. 598 00:28:20,220 --> 00:28:23,190 Jadi argumen pertama secara harfiah akan hal ini. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, koma, persen s, backslash-n. 600 00:28:31,850 --> 00:28:36,560 Dan sekarang aku tidak memberikan satu argumen, tapi dua argumen untuk printf. 601 00:28:36,560 --> 00:28:39,530 >> Dan apa yang seharusnya dilakukan dengan printf kedua input setelah saya melewati mereka di 602 00:28:39,530 --> 00:28:42,050 sebagai argumen? 603 00:28:42,050 --> 00:28:45,360 Ini seharusnya mengambil kedua mereka, yang saya disebut namanya, sehingga 604 00:28:45,360 --> 00:28:48,660 Bagian kedua kertas aku menuliskan beberapa saat yang lalu disebut namanya. 605 00:28:48,660 --> 00:28:53,550 Ini akan plug nilai dalam dari variabel ke placeholder, 606 00:28:53,550 --> 00:28:58,310 % S, sehingga, sekali lagi, hanya dalam beberapa saat ini waktu, kita akan melihat efek samping dari 607 00:28:58,310 --> 00:29:04,180 memiliki disebut printf, dimana sekarang kita tidak melihat "halo, dunia," tapi "halo, 608 00:29:04,180 --> 00:29:04,710 Obosi. " 609 00:29:04,710 --> 00:29:08,730 >> Jadi tepuk tangan meriah untuk kedua relawan kami, hanya satu di antaranya tahu 610 00:29:08,730 --> 00:29:12,010 ini akan terjadi. 611 00:29:12,010 --> 00:29:12,990 Baik. 612 00:29:12,990 --> 00:29:16,480 Jadi, mungkin, sesederhana itu, tentu saja, jika Anda sudah akrab 613 00:29:16,480 --> 00:29:20,190 dengan demikian, mudah-mudahan Anda tidak akan pernah lupa bahwa visual yang tertentu tentang bagaimana 614 00:29:20,190 --> 00:29:21,220 fungsi bekerja. 615 00:29:21,220 --> 00:29:23,000 >> Jadi ada lebih dari sekedar GetString. 616 00:29:23,000 --> 00:29:26,020 Bagian dalam CS50 perpustakaan, ada Seluruh sekelompok fungsi, yang semuanya 617 00:29:26,020 --> 00:29:29,510 dikapitalisasi hanya untuk membuat jelas bahwa kita menulis fungsi tersebut. 618 00:29:29,510 --> 00:29:33,610 Biasanya, di C, hampir setiap lain fungsi yang akan Anda gunakan adalah huruf kecil. 619 00:29:33,610 --> 00:29:36,190 Tapi kita sengaja menggunakan huruf kapital hanya untuk membuat jelas bahwa 620 00:29:36,190 --> 00:29:39,880 adalah roda pelatihan macam yang kita akan digunakan untuk hanya beberapa minggu yang 621 00:29:39,880 --> 00:29:42,890 menyederhanakan proses mendapatkan masukan dari pengguna. 622 00:29:42,890 --> 00:29:46,740 >> Perpustakaan CS50 tidak melakukan apa-apa bahwa kamu tidak bisa melakukan dengan 623 00:29:46,740 --> 00:29:50,230 hanya menggunakan kode C dari buku oldschool. 624 00:29:50,230 --> 00:29:53,310 Tapi, sekali lagi, kita menggunakan mereka sebagai pelatihan roda macam untuk hanya beberapa 625 00:29:53,310 --> 00:29:57,250 minggu sehingga kita dapat menyingkirkan kompleksitas bahwa Anda akan segera memahami 626 00:29:57,250 --> 00:30:00,460 diri melakukan sesuatu yang relatif mudah sebagai mendapatkan 627 00:30:00,460 --> 00:30:02,080 masukan dari pengguna. 628 00:30:02,080 --> 00:30:05,540 >> Jadi tahu bahwa Anda akan memiliki akses untuk getchar, GetDouble - 629 00:30:05,540 --> 00:30:06,050 dua kali lipat. 630 00:30:06,050 --> 00:30:07,050 Siapa itu - dan kemudian getFloat. 631 00:30:07,050 --> 00:30:07,600 Apa pelampung? 632 00:30:07,600 --> 00:30:09,382 Mari kita mulai dari sana. 633 00:30:09,382 --> 00:30:10,600 >> SISWA: [Tak terdengar]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID Malan: Ya. 635 00:30:10,790 --> 00:30:12,120 Ini adalah nomor dengan titik desimal. 636 00:30:12,120 --> 00:30:15,930 Jadi sedangkan int adalah bilangan bulat, yang adalah hanya sebuah angka dengan 0 sampai 9, 637 00:30:15,930 --> 00:30:18,940 beberapa jumlah pengulangan daripadanya, float adalah sesuatu 638 00:30:18,940 --> 00:30:20,100 dengan titik desimal. 639 00:30:20,100 --> 00:30:26,090 Dan ganda, sementara itu, juga merupakan nomor dengan titik desimal, tetapi lebih 640 00:30:26,090 --> 00:30:28,160 angka setelah desimal titik, berpotensi. 641 00:30:28,160 --> 00:30:30,040 >> Jadi kita akan kembali ke ini sebelumnya lama. 642 00:30:30,040 --> 00:30:34,560 Tapi biasanya, masing-masing jenis data, masing-masing jenis variabel 643 00:30:34,560 --> 00:30:39,380 bahwa perpustakaan seperti kita dapat kembali ke Anda, gunakan nomor yang berbeda dari bit untuk 644 00:30:39,380 --> 00:30:40,290 menyimpan informasi. 645 00:30:40,290 --> 00:30:43,910 Biasanya, sebuah Char, yang hanya berarti satu karakter, menggunakan 8 bit. 646 00:30:43,910 --> 00:30:47,490 Dan itu benar-benar konsisten dengan kami byte relawan pekan lalu yang 647 00:30:47,490 --> 00:30:50,410 datang dan mewakili salah satu Karakter ascii pada suatu waktu. 648 00:30:50,410 --> 00:30:51,850 Jadi Char adalah 8 bit. 649 00:30:51,850 --> 00:30:54,430 >> Sebuah float terjadi menjadi 32 bit, biasanya. 650 00:30:54,430 --> 00:30:59,230 Dan ganda, seperti yang Anda duga, adalah sebenarnya 64 bit, yang hanya lebih, 651 00:30:59,230 --> 00:31:01,360 yang berarti Anda dapat memiliki lebih besar nomor atau lebih presisi. 652 00:31:01,360 --> 00:31:03,000 Tapi sekali lagi, lebih pada lain waktu. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, sementara itu, meskipun bodoh bernama, benar-benar hanya 654 00:31:06,550 --> 00:31:10,770 integer yang dua kali lebih besar, dua kali lama, berpotensi, seperti biasa 655 00:31:10,770 --> 00:31:12,940 integer, 64 bit bukan 32. 656 00:31:12,940 --> 00:31:14,560 Dan getString kita telah menggunakan. 657 00:31:14,560 --> 00:31:18,870 >> Tapi ternyata, dalam CS50 perpustakaan, yang diimplementasikan, seperti yang akan kita lihat, dalam 658 00:31:18,870 --> 00:31:23,560 berupa dua file, salah satunya disebut cs50.h, memiliki dua lainnya 659 00:31:23,560 --> 00:31:24,770 tipe data di dalamnya. 660 00:31:24,770 --> 00:31:29,700 Boolean tidak ada di C. Anda dapat mensimulasikan mereka dengan hanya menggunakan 0 dan 1 661 00:31:29,700 --> 00:31:30,850 seluruh program Anda. 662 00:31:30,850 --> 00:31:35,500 Tapi kami di CS50 perpustakaan telah menciptakan simbol "benar" dan "palsu" 663 00:31:35,500 --> 00:31:38,580 untuk mewakili 1 dan 0 sehingga Anda tidak harus kode keras sesuatu 664 00:31:38,580 --> 00:31:39,810 benar seperti 1 dan 0. 665 00:31:39,810 --> 00:31:40,980 Tapi kita akan melihat orang-orang lagi. 666 00:31:40,980 --> 00:31:42,330 >> String, juga tidak ada. 667 00:31:42,330 --> 00:31:44,520 Dan itulah mengapa saya sebutkan itu sedikit kebohongan putih untuk saat ini. 668 00:31:44,520 --> 00:31:46,660 Tapi kita akan mengupas bahwa lapisan lama. 669 00:31:46,660 --> 00:31:49,540 Tetapi untuk sekarang, string adalah urutan karakter. 670 00:31:49,540 --> 00:31:51,790 >> Sementara itu, di C, Anda memang memiliki tipe data yang berbeda. 671 00:31:51,790 --> 00:31:53,200 Perhatikan ini huruf kecil. 672 00:31:53,200 --> 00:31:56,960 Jadi fungsi Anda melihat beberapa saat yang lalu adalah fungsi yang ditulis oleh CS50 673 00:31:56,960 --> 00:32:02,310 akan kembali kepada Anda nilai yang jatuh ke dalam salah satu kategori ini. 674 00:32:02,310 --> 00:32:06,730 >> Beberapa cheat sheet hanya untuk menanam benih di sini. printf tidak hanya 675 00:32:06,730 --> 00:32:08,600 mengambil% s sebagai penampung. 676 00:32:08,600 --> 00:32:13,490 Dibutuhkan% d untuk integer desimal, atau% saya akan bekerja dengan baik. 677 00:32:13,490 --> 00:32:19,450 % F nilai floating point. % C adalah untuk char, jika Anda ingin hanya satu pasang 678 00:32:19,450 --> 00:32:23,510 karakter menjadi string terformat seperti yang telah kita lakukan, Anda dapat menggunakan% c. 679 00:32:23,510 --> 00:32:28,490 >> Dan kemudian, agak mengganggu,% lld adalah untuk waktu yang lama, integer desimal yang panjang, 680 00:32:28,490 --> 00:32:31,050 yang hanya berarti jika Anda perlu benar-benar jumlah yang besar dan Anda menggunakan sesuatu 681 00:32:31,050 --> 00:32:35,450 disebut lama, yang kami akan datang kembali dalam pset, Anda dapat menggunakan% lld untuk 682 00:32:35,450 --> 00:32:40,700 memberitahu printf, pasang di sangat besar bilangan bulat di sini dengan cara kedua atau 683 00:32:40,700 --> 00:32:41,830 beberapa argumen lainnya. 684 00:32:41,830 --> 00:32:45,700 >> Dan terakhir, saya berjanji bahwa ada melarikan diri beberapa lainnya 685 00:32:45,700 --> 00:32:47,670 urutan yang printf mendukung. 686 00:32:47,670 --> 00:32:49,160 Kami telah melihat backslash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r Anda dapat melihat. 688 00:32:50,510 --> 00:32:51,780 Ini semacam hal yang tua-sekolah. 689 00:32:51,780 --> 00:32:55,920 Jika Anda pernah menggunakan mesin tik tahun nyata lalu dan Anda memakai engkol 690 00:32:55,920 --> 00:32:59,810 yang tidak hanya diputar roda untuk memindahkan lineup, juga pindah 691 00:32:59,810 --> 00:33:03,730 semuanya sepanjang perjalanan kembali ke kiri, baik, backslash-r hanya 692 00:33:03,730 --> 00:33:06,480 dasarnya memindahkan kursor Anda kembali ke awal baris 693 00:33:06,480 --> 00:33:07,830 tanpa bergerak ke bawah. 694 00:33:07,830 --> 00:33:09,780 Tapi sekali lagi, lebih pada bahwa, mungkin, di masa depan. 695 00:33:09,780 --> 00:33:13,670 >> Backslash-kutipan, kutipan backslash-ganda, backslash backslash-adalah 696 00:33:13,670 --> 00:33:16,600 solusi untuk teka-teki kecil kecil Saya singgung sebelumnya. 697 00:33:16,600 --> 00:33:18,920 Dan backslash-0 sebenarnya cukup menarik. 698 00:33:18,920 --> 00:33:21,470 Tapi kita akan kembali ke bahwa sebelum lama. 699 00:33:21,470 --> 00:33:25,640 >> Jadi biarkan aku pergi ke, saat ini, CS50 alat, dan mari kita benar-benar melakukan 700 00:33:25,640 --> 00:33:28,930 cepat pemanasan dengan salah satu contoh kita sudah dan kemudian beralih ke 701 00:33:28,930 --> 00:33:31,160 sesuatu yang sedikit lebih kompleks. 702 00:33:31,160 --> 00:33:34,980 Jadi jika saya membuka program saya disebut gedit - 703 00:33:34,980 --> 00:33:36,840 ini adalah editor grafis saya. 704 00:33:36,840 --> 00:33:38,460 Dan saya bisa melakukan itu - 705 00:33:38,460 --> 00:33:39,820 biarkan aku menutup jendela yang ada - 706 00:33:39,820 --> 00:33:42,720 dengan cara ikon ini di sini, gedit, di kiri bawah 707 00:33:42,720 --> 00:33:44,170 sudut sebelah menu. 708 00:33:44,170 --> 00:33:48,670 >> Aku akan pergi ke depan dan memajukan, dan menyimpan contoh ini ke dalam, katakanlah, John 709 00:33:48,670 --> 00:33:49,660 Folder Harvard. 710 00:33:49,660 --> 00:33:52,690 Folder John Harvard hanya rumahnya direktori dimana semua file-nya hidup 711 00:33:52,690 --> 00:33:53,340 secara default. 712 00:33:53,340 --> 00:33:58,410 Dan aku akan menyimpan ini sebagai file bernama hello-0.c. 713 00:33:58,410 --> 00:34:01,260 Dan aku telah memilih nama ini saja sehingga baris dengan kode contoh pada 714 00:34:01,260 --> 00:34:04,210 website tentu dan di Video online YouTube. 715 00:34:04,210 --> 00:34:06,320 >> Jadi sekarang aku akan mulai menulis program pertama saya. 716 00:34:06,320 --> 00:34:08,469 Biarkan aku memperbesar untuk keterbacaan. 717 00:34:08,469 --> 00:34:12,760 Dan aku akan pergi ke depan dan berkata int void main, yang hanya seperti itu 718 00:34:12,760 --> 00:34:14,900 potongan puzzle kuning yang mulai program. 719 00:34:14,900 --> 00:34:18,290 Saya telah masuk ke kebiasaan selama tahun membuka brace keriting saya, maka 720 00:34:18,290 --> 00:34:22,000 juga menutup dan kemudian akan kembali ke di mana saya ingin menempatkan kode saya, hanya 721 00:34:22,000 --> 00:34:24,630 karena membantu saya menjaga semuanya seimbang, terutama karena saya 722 00:34:24,630 --> 00:34:25,880 Program akan lama. 723 00:34:25,880 --> 00:34:29,239 >> Dan sekarang, di sini, aku akan pergi ke depan dan berkata, printf, mengutip tanda kutip, 724 00:34:29,239 --> 00:34:34,330 hello world, backslash-n, kutipan dekat, kurung tutup, koma. 725 00:34:34,330 --> 00:34:38,100 Jadi aku hanya mengulangi segala sesuatu yang kita sudah telah mengambil untuk diberikan sejauh ini. 726 00:34:38,100 --> 00:34:39,270 Sekarang aku akan zoom out. 727 00:34:39,270 --> 00:34:43,030 >> Dan terminal ini jendela di sini, apa yang saya diizinkan untuk melakukan di hitam ini 728 00:34:43,030 --> 00:34:44,389 dan jendela putih? 729 00:34:44,389 --> 00:34:46,977 Apa yang bisa saya gunakan untuk? 730 00:34:46,977 --> 00:34:49,770 Jadi ini adalah di mana saya menjalankan perintah dan di mana saya dapat mengkompilasi hal. 731 00:34:49,770 --> 00:34:50,620 Dan aku akan tetap sederhana. 732 00:34:50,620 --> 00:34:52,780 Aku akan menggunakan sebuah program Membuat disebut, yang tidak 733 00:34:52,780 --> 00:34:54,020 teknis compiler. 734 00:34:54,020 --> 00:34:56,360 Compiler disebut dentang, tapi kami akan datang kembali ke dalam 735 00:34:56,360 --> 00:34:57,190 atau dua minggu waktunya. 736 00:34:57,190 --> 00:35:03,410 >> Untuk saat ini, aku hanya akan mengetikkan make hello-0, Tapi bagi anda yang 737 00:35:03,410 --> 00:35:07,050 membandingkan dalam pikiran Anda apa yang baru saya diketik dengan apa yang saya harus mengetik mungkin 738 00:35:07,050 --> 00:35:10,180 sudah tahu bahwa aku sesuatu yang salah di sini. 739 00:35:10,180 --> 00:35:12,160 Sekarang, jelas ada beberapa kesalahan. 740 00:35:12,160 --> 00:35:16,742 Sebelum aku bahkan melihat apa yang mereka, setiap pikiran untuk apa yang saya lakukan salah? 741 00:35:16,742 --> 00:35:18,590 >> MAHASISWA: [interposing SUARA]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID Malan: Ya. 743 00:35:18,840 --> 00:35:20,640 Aku kehilangan file header perpustakaan. 744 00:35:20,640 --> 00:35:24,240 Setiap file-file h. Disebut sundulan file, dan mereka secara kolektif 745 00:35:24,240 --> 00:35:25,680 milik hal yang disebut perpustakaan. 746 00:35:25,680 --> 00:35:28,030 Perpustakaan hanyalah potongan kode bahwa orang lain menulis. 747 00:35:28,030 --> 00:35:32,140 Jadi [standar? i?] perpustakaan adalah kumpulan file yang berisi kode 748 00:35:32,140 --> 00:35:33,330 bahwa orang lain menulis. 749 00:35:33,330 --> 00:35:34,820 >> Jadi aku hilang itu. 750 00:35:34,820 --> 00:35:36,520 Jadi, mengapa saya mendapatkan kesalahan? 751 00:35:36,520 --> 00:35:40,840 Nah, biarkan aku gulir kembali di jendela terminal saya di sini. 752 00:35:40,840 --> 00:35:44,310 Dan sayangnya, di C, seperti dalam banyak bahasa pemrograman, khususnya 753 00:35:44,310 --> 00:35:47,830 jika itu semua baru bagi Anda, kesalahan pesan yang tepat, tapi mereka juga 754 00:35:47,830 --> 00:35:48,620 cukup samar. 755 00:35:48,620 --> 00:35:51,720 Dan kesalahan di sini, dalam warna merah, adalah "Implisit menyatakan fungsi perpustakaan 756 00:35:51,720 --> 00:35:57,660 printf dengan jenis, "dan kemudian gulungan ke baris berikutnya, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "Itu hanya akan benar-benar luar biasa cepat. 758 00:36:00,220 --> 00:36:04,420 >> Tapi apa yang harus Anda mulai lakukan, jika, lagi, baru untuk semua ini, hanya untuk 759 00:36:04,420 --> 00:36:06,010 mulai mencari kata kunci. 760 00:36:06,010 --> 00:36:08,770 Jelas, aku mungkin tidak mengerti setengah kata-kata yang saya lihat dulu. 761 00:36:08,770 --> 00:36:10,140 Anda akan, meskipun, dalam waktu seminggu. 762 00:36:10,140 --> 00:36:11,230 Tapi saya melihat printf. 763 00:36:11,230 --> 00:36:14,310 Dan itu harus dimulai, sebelum panjang, untuk ingatan Anda, semua yang benar, printf. 764 00:36:14,310 --> 00:36:15,210 Sesuatu yang salah dengan printf. 765 00:36:15,210 --> 00:36:16,580 Apakah aku mengejanya salah? 766 00:36:16,580 --> 00:36:18,130 Tidak, itu tidak terlihat seperti - oh. 767 00:36:18,130 --> 00:36:21,350 Saya tidak bisa menggunakannya kecuali saya mengajar compiler bahwa itu ada. 768 00:36:21,350 --> 00:36:25,220 Dan, sekali lagi, pergi dengan naluri Anda, bahkan jika Anda tidak benar-benar mengerti 769 00:36:25,220 --> 00:36:26,510 pesan kesalahan yang sebenarnya. 770 00:36:26,510 --> 00:36:30,240 >> Dan memang, solusi di sini adalah untuk hanya memasukkannya di bagian atas file 771 00:36:30,240 --> 00:36:34,340 seperti itu, resaving file saya dengan Control-S atau menu File. 772 00:36:34,340 --> 00:36:36,730 Dan jika aku sekarang kembali ke sini, Aku akan membersihkan ini. 773 00:36:36,730 --> 00:36:39,150 Control-L adalah cara yang bagus untuk membersihkan layar. 774 00:36:39,150 --> 00:36:44,870 Dan kemudian aku akan ketik "make halo 0 "Enter, dan sekarang saya masih melihat 775 00:36:44,870 --> 00:36:47,710 urutan samar simbol, tetapi kami akan kembali ke itu. 776 00:36:47,710 --> 00:36:49,230 Itulah yang Membuat lakukan untuk Anda. 777 00:36:49,230 --> 00:36:52,590 Ini mengotomatisasi proses mengambil perintah cukup mengganggu melibatkan 778 00:36:52,590 --> 00:36:54,050 Dentang, compiler yang sebenarnya. 779 00:36:54,050 --> 00:36:57,460 Tapi fakta bahwa aku tidak ada kesalahan berarti hal ini harus bekerja. 780 00:36:57,460 --> 00:37:00,630 >> Jadi aku sekarang akan melakukan - biarkan aku memperbesar lagi - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, dan memang, saya melihat "Hello, world." Jadi mari kita meningkatkan 782 00:37:07,070 --> 00:37:12,105 ini pernah jadi sedikit hanya untuk meniru langkah-langkah yang kita dimaksudkan. 783 00:37:12,105 --> 00:37:15,370 Aku akan mengubah nama ini dengan Save As ke hello1.c. 784 00:37:15,370 --> 00:37:20,300 Dan sekarang aku akan mendeklarasikan variabel disebut nama, sehingga nama tali, 785 00:37:20,300 --> 00:37:23,420 dan aku akan dimasukkan di dalamnya nilai kutipan-tanda kutip 786 00:37:23,420 --> 00:37:27,030 D-A-V-I-D close-kutipan koma. 787 00:37:27,030 --> 00:37:31,150 Dan sekarang aku akan menggantikan "dunia" dengan apa yang tempat untuk string? 788 00:37:31,150 --> 00:37:32,200 % S. 789 00:37:32,200 --> 00:37:35,040 >> Dan sekarang, berapa banyak argumen yang harus printf mengambil waktu ini? 790 00:37:35,040 --> 00:37:35,700 Jadi dua. 791 00:37:35,700 --> 00:37:37,090 Jadi aku pergi di luar tanda kutip. 792 00:37:37,090 --> 00:37:39,330 Saya ketik "nama" setelah koma. 793 00:37:39,330 --> 00:37:41,550 Tapi aku telah melakukan sesuatu lain salah kali ini. 794 00:37:41,550 --> 00:37:43,940 Tapi mari kita berasumsi bahwa saya tidak menyadari bahwa belum. 795 00:37:43,940 --> 00:37:44,910 Biarkan aku pergi di sini. 796 00:37:44,910 --> 00:37:48,850 >> Dan perhatikan juga, saya mendapatkan sedikit bosan mengetik "make halo 0" semua 797 00:37:48,850 --> 00:37:50,180 waktu, "membuat" dan semua ini. 798 00:37:50,180 --> 00:37:53,270 Jadi, ternyata, di Linus Anda dapat sering memukul panah Up pada Anda 799 00:37:53,270 --> 00:37:56,850 keyboard, dan Anda benar-benar dapat menggulir melalui semua perintah yang telah saya 800 00:37:56,850 --> 00:37:58,830 dilaksanakan sebelumnya untuk sekarang. 801 00:37:58,830 --> 00:38:02,040 Jadi jika saya melakukan itu, Up, Up, ada membuat halo 0. 802 00:38:02,040 --> 00:38:02,610 Aku tidak mau itu. 803 00:38:02,610 --> 00:38:05,450 Saya hanya ingin mengubah itu untuk halo 1 saat ini, Enter. 804 00:38:05,450 --> 00:38:07,620 Akhirnya, yang akan menghemat waktu. 805 00:38:07,620 --> 00:38:08,150 >> Baik. 806 00:38:08,150 --> 00:38:09,520 Sayangnya, ada adalah kesalahan. 807 00:38:09,520 --> 00:38:10,980 Jadi biarkan aku gulir ke atas. 808 00:38:10,980 --> 00:38:13,120 Ini terlihat seperti aku benar-benar dibantai program ini. 809 00:38:13,120 --> 00:38:16,530 Maksudku, tuhan saya, itu dua baris kode, dan 10 yang garis kesalahan. 810 00:38:16,530 --> 00:38:18,800 Tapi lihatlah yang atas dulu. 811 00:38:18,800 --> 00:38:21,640 Penggunaan dideklarasikan identifier tali. 812 00:38:21,640 --> 00:38:23,270 Apakah Maksudku standar i n? 813 00:38:23,270 --> 00:38:23,930 Tidak, aku tidak. 814 00:38:23,930 --> 00:38:24,940 Aku berarti tali. 815 00:38:24,940 --> 00:38:29,390 >> Tapi di mana variabel string Jenis menyatakan, dd kita katakan? 816 00:38:29,390 --> 00:38:30,730 Jadi dalam CS50 perpustakaan. 817 00:38:30,730 --> 00:38:33,740 Jadi tidak cukup, dalam pertama beberapa minggu, hanya untuk menggunakan 818 00:38:33,740 --> 00:38:34,860 apa C memberi kita. 819 00:38:34,860 --> 00:38:38,120 Saya juga akan pergi di sini, dan saya bisa meletakkannya di atas atau di bawah, tapi aku akan 820 00:38:38,120 --> 00:38:40,340 hanya menyimpannya abjad untuk menjaga hal-hal yang teratur. 821 00:38:40,340 --> 00:38:43,470 Aku akan mencakup cs50.h, yang pra-instal untuk 822 00:38:43,470 --> 00:38:44,900 Anda di CS50 alat. 823 00:38:44,900 --> 00:38:47,640 Dan itu open source, sehingga bahkan orang di internet dapat menggunakannya pada mereka 824 00:38:47,640 --> 00:38:48,450 komputer sendiri. 825 00:38:48,450 --> 00:38:50,700 Tapi ia datang dengan CS50 alat. 826 00:38:50,700 --> 00:38:55,320 >> Jadi sekarang biarkan aku kembali dan ulang ini dengan membuat halo 1. 827 00:38:55,320 --> 00:38:55,710 Sialan. 828 00:38:55,710 --> 00:38:57,240 Masih kesalahan lain. 829 00:38:57,240 --> 00:38:59,370 Mari saya gulir ke atas untuk yang pertama, meskipun. 830 00:38:59,370 --> 00:39:00,630 Yang satu ini sedikit rumit. 831 00:39:00,630 --> 00:39:03,830 Karakter multi-karakter konstan. 832 00:39:03,830 --> 00:39:04,890 Itu tidak membantu saya. 833 00:39:04,890 --> 00:39:08,220 Tapi perhatikan, dentang adalah setidaknya sedikit sedikit layak, dimana dengan sedikit 834 00:39:08,220 --> 00:39:11,890 Simbol tanda sisipan hijau, itu mengatakan di sini adalah di mana saya kacau. 835 00:39:11,890 --> 00:39:16,160 Mengapa menunjuk, dengan sedikit hijau panah, pada kutipan single berikutnya 836 00:39:16,160 --> 00:39:18,290 nama saya? 837 00:39:18,290 --> 00:39:20,880 >> Jadi ini adalah salah satu hal yang Anda hanya terbiasa, terutama jika Anda sudah 838 00:39:20,880 --> 00:39:23,980 pemrograman dengan Python, atau JavaScript, atau bahasa lain di mana detail ini 839 00:39:23,980 --> 00:39:24,560 tidak masalah. 840 00:39:24,560 --> 00:39:25,740 Dalam C, itu tidak masalah. 841 00:39:25,740 --> 00:39:29,520 Jika Anda menyatakan string, yaitu urutan 0 atau lebih karakter, 842 00:39:29,520 --> 00:39:32,280 Anda benar-benar harus menggunakan tanda kutip ganda. 843 00:39:32,280 --> 00:39:36,670 Jadi saya benar-benar perlu untuk mengubah kembali ini untuk membuka penawaran, tutup kutipan, dengan 844 00:39:36,670 --> 00:39:37,800 tanda kutip ganda. 845 00:39:37,800 --> 00:39:41,610 Tanda kutip tunggal memiliki tempat mereka, namun hanya bila Anda menggunakan individu 846 00:39:41,610 --> 00:39:44,100 karakter, tetapi lebih pada lain waktu. 847 00:39:44,100 --> 00:39:46,550 Untuk saat ini, tanda kutip ganda diperlukan. 848 00:39:46,550 --> 00:39:50,460 >> Jadi sekarang, biarkan aku kembali ke terminal saya window, membuat halo 1. 849 00:39:50,460 --> 00:39:51,450 Dan siapa percaya diri? 850 00:39:51,450 --> 00:39:53,800 Apakah program ini sekarang akan untuk mengkompilasi dengan benar? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Jadi tiga dari kita berpikir ini. 854 00:39:59,780 --> 00:40:00,280 Baik. 855 00:40:00,280 --> 00:40:01,190 Enter. 856 00:40:01,190 --> 00:40:02,440 Dan itu benar-benar melakukannya. 857 00:40:02,440 --> 00:40:05,130 Jadi tidak ada kesalahan saat ini, bahkan meskipun program ini sudah mendapat sedikit 858 00:40:05,130 --> 00:40:05,840 lebih kompleks. 859 00:40:05,840 --> 00:40:10,110 Jika saya lakukan sekarang dot slash halo 1, Masukkan, itu akan mengatakan "Halo, David." 860 00:40:10,110 --> 00:40:11,750 >> Tapi mari kita lakukan iterasi ketiga ini, di mana 861 00:40:11,750 --> 00:40:13,380 Program ini benar-benar dinamis. 862 00:40:13,380 --> 00:40:16,770 Biarkan aku pergi ke depan dan mengubah file nama, hanya untuk konsistensi dengan 863 00:40:16,770 --> 00:40:20,410 file Anda akan memiliki tersedia Anda sesudahnya online. 864 00:40:20,410 --> 00:40:21,620 Enter. 865 00:40:21,620 --> 00:40:25,510 Dan sekarang aku akan pergi dan tidak menyimpan "David" sulit kode di sini. 866 00:40:25,510 --> 00:40:28,826 Apa yang bisa saya lakukan untuk sangat sederhana meningkatkan program ini? 867 00:40:28,826 --> 00:40:30,520 >> Aku bisa menelepon GetString. 868 00:40:30,520 --> 00:40:33,240 Mungkin apa yang tidak jelas sedikit yang akan terjadi, jadi aku akan 869 00:40:33,240 --> 00:40:38,470 untuk benar-benar menambahkan baris lain, printf, dan sebutkan nama, usus, kutipan dekat, hanya 870 00:40:38,470 --> 00:40:40,790 untuk memberikan pengguna prompt di layar. 871 00:40:40,790 --> 00:40:42,980 Dan sekarang aku akan pergi di sini, dan aku akan menggunakan shortcut keyboard. 872 00:40:42,980 --> 00:40:47,680 Aku akan pergi Up, Up, dan mengubah halo 1 halo 2, Enter. 873 00:40:47,680 --> 00:40:49,260 Dan untungnya, aku membuat kemajuan. 874 00:40:49,260 --> 00:40:52,720 >> Dan sekarang aku akan naik dot slash Halo dan 875 00:40:52,720 --> 00:40:54,690 mengubah ke 2, Enter. 876 00:40:54,690 --> 00:40:55,650 Dan sekarang program saya - 877 00:40:55,650 --> 00:40:57,700 Aku akan memperbesar - semakin yang cantik sedikit. 878 00:40:57,700 --> 00:41:02,190 Nama akan menjadi, katakanlah Rob saat ini, Enter, halo, Rob. 879 00:41:02,190 --> 00:41:03,260 Kita bisa melakukannya lagi. 880 00:41:03,260 --> 00:41:05,360 Nama, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Nama, Yusuf, Enter. 882 00:41:07,820 --> 00:41:11,596 Nama, mari kita coba untuk menjadi sulit, Enter. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 Ini tidak benar-benar bug. 885 00:41:14,680 --> 00:41:16,090 Jadi itu hanya sedikit jelek. 886 00:41:16,090 --> 00:41:18,640 Jadi mungkin kita bisa memecahkan masalah ini di masa depan, tidak sekarang. 887 00:41:18,640 --> 00:41:20,840 >> Tapi bagaimana akan Anda secara naluriah pergi tentang menangani 888 00:41:20,840 --> 00:41:21,990 bahwa tantangan tertentu? 889 00:41:21,990 --> 00:41:23,710 Itu hanya tampak bodoh. 890 00:41:23,710 --> 00:41:27,320 Bagaimana Anda menghindari hal-hal tampak bodoh? 891 00:41:27,320 --> 00:41:29,890 Jadi yang bisa kami lakukan, OK, saya mendengar beberapa hal, kondisi dan loop. 892 00:41:29,890 --> 00:41:33,340 Kita bisa menggunakan, satu, kondisi, untuk memeriksa apa yang panjang dari string 893 00:41:33,340 --> 00:41:34,190 pengguna memberi kami? 894 00:41:34,190 --> 00:41:37,100 Dan jika itu 0, itu hanya mengutip tanda kutip, mereka hanya tekan Enter, maka 895 00:41:37,100 --> 00:41:38,930 mungkin aku harus berteriak pada mereka dan meminta mereka lagi. 896 00:41:38,930 --> 00:41:39,970 Tapi bagaimana prompt mereka lagi? 897 00:41:39,970 --> 00:41:44,230 Yah, saya juga mendengar lingkaran, dan aku bisa melakukannya lagi dan lagi dan lagi 898 00:41:44,230 --> 00:41:47,010 mendorong pengguna untuk hal yang sama. 899 00:41:47,010 --> 00:41:48,880 >> Nah, mari kita lakukan salah satu contoh lainnya menggunakan berbeda 900 00:41:48,880 --> 00:41:50,620 fungsi dalam CS50 perpustakaan. 901 00:41:50,620 --> 00:41:52,330 Biarkan saya menutup file ini. 902 00:41:52,330 --> 00:41:53,510 Mari saya membuat yang baru. 903 00:41:53,510 --> 00:41:58,510 Dan saya akan menyebutnya adder.c, hanya karena mudah untuk melakukan aritmatika sederhana, 904 00:41:58,510 --> 00:42:00,890 meskipun hal ini akan benar-benar underwhelming dengan apa yang bisa Anda lakukan 905 00:42:00,890 --> 00:42:02,250 dengan komputer modern. 906 00:42:02,250 --> 00:42:03,750 >> Tapi biarkan aku pergi ke depan sekarang dan - 907 00:42:03,750 --> 00:42:10,680 Saya belajar pelajaran saya terakhir kali - termasuk cs50.h, termasuk stdio.h, int 908 00:42:10,680 --> 00:42:14,170 void main, yang, untuk saat ini, saya hanya akan mengambil iman buta, tapi kita akan berasumsi 909 00:42:14,170 --> 00:42:16,380 yang akan memahami apa itu berarti tak lama. 910 00:42:16,380 --> 00:42:21,030 Dan aku akan mengatakan sesuatu seperti "memberi saya sebuah int." 911 00:42:21,030 --> 00:42:22,140 >> Dan sekarang, bagaimana cara mendapatkan int? 912 00:42:22,140 --> 00:42:26,820 Saya ingin akhirnya mendeklarasikan variabel disebut x bertipe int dan 913 00:42:26,820 --> 00:42:29,240 simpan di dalamnya integer dari pengguna. 914 00:42:29,240 --> 00:42:29,970 Jadi itu seteguk. 915 00:42:29,970 --> 00:42:35,680 Tetapi jika seseorang ingin mengusulkan, bagaimana cara mendeklarasikan integer disebut x? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> Jadi itu benar-benar sederhana itu. 918 00:42:37,430 --> 00:42:38,240 Berikan saya sebuah int. 919 00:42:38,240 --> 00:42:39,070 Sebut saja x. 920 00:42:39,070 --> 00:42:40,580 Sekarang saya menggunakan operator penugasan. 921 00:42:40,580 --> 00:42:43,400 Dan bagaimana cara menyimpan dari meninggalkan nilai pengguna? 922 00:42:43,400 --> 00:42:47,310 Aku tidak ingin menelepon GetString, jelas, melainkan getInt. 923 00:42:47,310 --> 00:42:49,060 Setiap argumen? 924 00:42:49,060 --> 00:42:49,350 Tidak. 925 00:42:49,350 --> 00:42:51,870 Jadi terbuka paren, paren dekat segera, dan kemudian 926 00:42:51,870 --> 00:42:53,440 koma berakhir baris. 927 00:42:53,440 --> 00:42:54,930 >> Sekarang biarkan aku melakukan ini lagi. 928 00:42:54,930 --> 00:42:57,070 Beri aku int lain. 929 00:42:57,070 --> 00:43:01,850 Kali ini saya akan melakukan int, mari kita menyebutnya y, sama getInt. 930 00:43:01,850 --> 00:43:05,060 Dan sekarang biarkan aku melakukan sesuatu yang super-sederhana seperti beberapa matematika. 931 00:43:05,060 --> 00:43:14,340 Jadi printf, jumlah% d adalah tempat untuk int. 932 00:43:14,340 --> 00:43:20,030 Dan d%, periode, backslash-n. 933 00:43:20,030 --> 00:43:20,360 >> Baik. 934 00:43:20,360 --> 00:43:21,670 Jadi itu tidak benar-benar matematika. 935 00:43:21,670 --> 00:43:25,500 Tapi kalau aku ingin mengatakan jumlah ini nilai ditambah nilai ini sama ini 936 00:43:25,500 --> 00:43:29,320 nilai lain, berapa banyak argumen ke Total saya harus memberikan printf, 937 00:43:29,320 --> 00:43:30,520 pada akhirnya? 938 00:43:30,520 --> 00:43:31,420 Jadi empat, kan? 939 00:43:31,420 --> 00:43:33,790 String ini dan kemudian tiga nilai. 940 00:43:33,790 --> 00:43:37,560 Jadi x adalah yang pertama saya ingin menjadi terpasang di pertama ke% d. 941 00:43:37,560 --> 00:43:39,270 y akan menjadi yang berikutnya. 942 00:43:39,270 --> 00:43:42,030 >> Dan sekarang aku agak ingin mengatakan z, tapi z tidak ada. 943 00:43:42,030 --> 00:43:43,190 Tapi itu bukan masalah besar. 944 00:43:43,190 --> 00:43:45,440 Karena apa yang akan Anda lakukan secara naluriah, terutama jika Anda memiliki 945 00:43:45,440 --> 00:43:47,820 graphing calculator, apa yang Anda ketik? 946 00:43:47,820 --> 00:43:48,760 Bagaimana x ditambah y? 947 00:43:48,760 --> 00:43:50,200 Jadi bukan sebuah variabel yang sebenarnya. 948 00:43:50,200 --> 00:43:51,820 Itu hanya jumlah dari dua variabel lain. 949 00:43:51,820 --> 00:43:53,170 Dan itu sah. 950 00:43:53,170 --> 00:43:56,630 C pasti mengerti sederhana aritmatika seperti ini. 951 00:43:56,630 --> 00:43:58,450 >> Koma, simpan. 952 00:43:58,450 --> 00:44:02,080 Sekarang biarkan aku pergi di sini dan mengetikkan make adder, Enter. 953 00:44:02,080 --> 00:44:04,100 Tidak ada kesalahan, jadi itu kemajuan juga. 954 00:44:04,100 --> 00:44:04,890 Ketik adder. 955 00:44:04,890 --> 00:44:07,100 Dan satu cara pintas keyboard, jika Anda mulai bosan 956 00:44:07,100 --> 00:44:08,760 dengan semua perintah - 957 00:44:08,760 --> 00:44:12,650 jika Anda mulai mengetik perintah, seperti dot slash iklan, dan di sanalah Anda 958 00:44:12,650 --> 00:44:16,020 kebosanan tendangan, Anda biasanya dapat menekan Tab untuk memiliki komputer menyelesaikan 959 00:44:16,020 --> 00:44:20,510 beristirahat kalimat untuk Anda jika tidak ambigu apa yang harus datang setelah iklan. 960 00:44:20,510 --> 00:44:23,950 >> Jadi biarkan aku pergi saja sekarang dan Anda klik Enter. 961 00:44:23,950 --> 00:44:27,490 Berikan saya sebuah int, 1, 2, dan untungnya, itu 3. 962 00:44:27,490 --> 00:44:29,900 Tapi seperti biasa, pengujian program tidak harus mengurangi ke 963 00:44:29,900 --> 00:44:30,820 hanya mencoba sekali. 964 00:44:30,820 --> 00:44:35,560 Biarkan aku mencoba kasus sudut, seperti negatif 1, beri aku 1, dan yang satu 965 00:44:35,560 --> 00:44:36,210 check out juga. 966 00:44:36,210 --> 00:44:38,870 Dan aku mungkin ingin melakukan lebih pengujian yang ketat, tapi aku cukup 967 00:44:38,870 --> 00:44:40,630 nyaman dengan mana itu di. 968 00:44:40,630 --> 00:44:43,110 >> Nah, sekarang mari kita coba program lain yang menggunakan kali ini 969 00:44:43,110 --> 00:44:44,620 sedikit sintaks lainnya. 970 00:44:44,620 --> 00:44:46,100 Mari saya membuat file baru. 971 00:44:46,100 --> 00:44:51,050 Aku akan menelepon conditions0.c ini dengan garis dengan beberapa contoh kode online. 972 00:44:51,050 --> 00:44:55,550 Dan biarkan aku pergi ke depan dan melakukan termasuk cs50.h, termasuk 973 00:44:55,550 --> 00:45:00,320 stdio.h, di void main - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Di sana kami pergi. 976 00:45:01,850 --> 00:45:03,010 Kami memiliki boilerplate standar kami. 977 00:45:03,010 --> 00:45:08,170 >> Dan kali ini saya akan mengatakan printf, "Saya ingin sebuah int, silakan," hanya untuk 978 00:45:08,170 --> 00:45:10,030 membuat prompt sedikit lebih ramah. 979 00:45:10,030 --> 00:45:11,620 Dan sekarang saya ingin mendapatkan int dari pengguna. 980 00:45:11,620 --> 00:45:15,010 Aku akan menyebutnya n kali ini, hanya karena n terdengar seperti nomor. 981 00:45:15,010 --> 00:45:18,140 getInt, dan sekarang, apa yang Saya ingin lakukan dengan itu? 982 00:45:18,140 --> 00:45:21,640 Nah, jika n - dan saya akan memperbesar - 983 00:45:21,640 --> 00:45:25,930 jika n lebih besar dari 0, saya ingin melakukan hal berikut - 984 00:45:25,930 --> 00:45:36,060 printf "Kau memilih angka positif." Lain, aku akan mengetik printf "Anda 985 00:45:36,060 --> 00:45:37,870 mengambil negatif 986 00:45:37,870 --> 00:45:39,650 nomor. "Baiklah. 987 00:45:39,650 --> 00:45:44,410 Jadi program ini, meskipun saya melakukannya cepat, terlihat benar sintaktis. 988 00:45:44,410 --> 00:45:45,010 Mari saya coba ini. 989 00:45:45,010 --> 00:45:46,890 Membuat kondisi 0. 990 00:45:46,890 --> 00:45:47,710 Tampaknya berjalan. 991 00:45:47,710 --> 00:45:49,230 Kondisi 0, masukkan. 992 00:45:49,230 --> 00:45:51,910 Mari kita memberikan sebuah int 50. 993 00:45:51,910 --> 00:45:53,160 Aku mengambil angka positif. 994 00:45:53,160 --> 00:45:54,230 Mari kita coba lagi. 995 00:45:54,230 --> 00:45:54,930 Kondisi 0. 996 00:45:54,930 --> 00:45:56,260 Negatif 50. 997 00:45:56,260 --> 00:45:57,290 Aku mengambil angka negatif. 998 00:45:57,290 --> 00:46:00,350 >> Tapi sekarang, biarkan aku memilih apa yang akan kita terus memanggil kasus sudut, yang lebih 999 00:46:00,350 --> 00:46:04,702 kasus yang menarik yang menurut Anda mungkin memberi Anda beberapa masalah, 0. 1000 00:46:04,702 --> 00:46:07,940 Sekarang, aku cukup yakin ini adalah salah satu kasus-kasus sudut mana nol 1001 00:46:07,940 --> 00:46:12,330 positif maupun negatif, sehingga saya Program, meskipun dalam sintaksis 1002 00:46:12,330 --> 00:46:15,440 benar - itu mengkompilasi, berjalan - tidak logis benar. 1003 00:46:15,440 --> 00:46:21,050 Jadi apa memperbaiki sederhana di sini jika saya ingin untuk mendeteksi, jika saya ingin menangani n 1004 00:46:21,050 --> 00:46:23,840 sama dengan 0 secara terpisah? 1005 00:46:23,840 --> 00:46:32,980 >> Jadi jika n sama dengan 0, maka saya ingin mengatakan sesuatu seperti printf "Kau memilih 0." 1006 00:46:32,980 --> 00:46:33,990 Mari saya coba ini sekarang. 1007 00:46:33,990 --> 00:46:38,320 Biarkan aku pergi kembali ke sini, jelas jendela, dan mengkompilasi ulang. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Satu kesalahan menghasilkan. 1010 00:46:39,770 --> 00:46:41,630 Tapi aku ingin Anda periksa jika n sama dengan 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Jadi sekali lagi, lain hal bodoh untuk membiasakan diri, tanda sama adalah 1013 00:46:47,720 --> 00:46:48,910 operator penugasan. 1014 00:46:48,910 --> 00:46:52,240 Jadi ini sebenarnya kesalahan dalam hal itu, teknis, meskipun compiler 1015 00:46:52,240 --> 00:46:56,450 melindungi saya dari diriku sendiri, kita akan teknis dapat menyalin 0 ke n, yang 1016 00:46:56,450 --> 00:46:57,590 bukan apa yang saya inginkan. 1017 00:46:57,590 --> 00:47:00,950 Saya ingin menguji untuk kesetaraan dengan sama sama. 1018 00:47:00,950 --> 00:47:03,390 Dan sehingga sekarang mungkin solusi saya lebih baik. 1019 00:47:03,390 --> 00:47:07,810 >> Biarkan aku benar-benar resave ini sebagai, katakanlah, conditions1, menjadi baru dan lebih baik. 1020 00:47:07,810 --> 00:47:10,480 Jadi sekarang jika saya ulang ini, itu akan membuat kondisi - 1021 00:47:10,480 --> 00:47:16,960 whoops - membuat conditions1 dot slash conditions1, Enter, "Saya ingin sebuah int, 1022 00:47:16,960 --> 00:47:18,760 silakan. "Aku akan pergi depan dan ketik 50. 1023 00:47:18,760 --> 00:47:19,660 Ini masih baik. 1024 00:47:19,660 --> 00:47:21,200 Negatif 50, masih bagus. 1025 00:47:21,200 --> 00:47:24,920 0, dan itu, memang, terdeteksi bahwa saya mengambil 0. 1026 00:47:24,920 --> 00:47:28,200 >> Jadi apa lagi yang bisa saya lakukan sekarang dengan ini? 1027 00:47:28,200 --> 00:47:32,280 Nah, kita pasti bisa melakukannya semakin hal yang kompleks. 1028 00:47:32,280 --> 00:47:37,240 Tapi apa yang saya ingin mengusulkan adalah bahwa kita berakhir pada catatan ini di sini. 1029 00:47:37,240 --> 00:47:41,680 Jika kita menarik ini, Anda akan melihat, mungkin, kartun favorit Anda 1030 00:47:41,680 --> 00:47:43,326 sampai hari ini Anda mungkin pernah dipahami. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 Dan itulah tentang kualitas tawa Anda harus mendapatkan dengan CS lelucon. 1033 00:47:49,520 --> 00:47:51,060 Jadi itu tentang benar. 1034 00:47:51,060 --> 00:47:54,900 >> Tapi yang lebih kuasa, saya pikir saya akan memberi kita sedikit teaser untuk hari Senin. 1035 00:47:54,900 --> 00:47:56,430 Jadi kita sudah mulai menggunakan bilangan bulat. 1036 00:47:56,430 --> 00:47:57,510 Kami telah disebut mengapung. 1037 00:47:57,510 --> 00:48:00,120 Kami bahkan disebut ganda, yang, sekali lagi, memberikan nomor 1038 00:48:00,120 --> 00:48:01,390 setelah titik desimal. 1039 00:48:01,390 --> 00:48:04,230 >> Tapi ternyata yang mengambang dan ganda, dan, benar-benar, komputer, 1040 00:48:04,230 --> 00:48:08,470 fundamental, tidak bisa mengungkapkan beberapa nilai tepatnya. 1041 00:48:08,470 --> 00:48:12,840 Kita tahu dari kelas matematika yang dapat Anda memiliki jumlah angka setelah 1042 00:48:12,840 --> 00:48:13,510 titik desimal. 1043 00:48:13,510 --> 00:48:16,460 Dan Anda bahkan dapat menempatkan sebuah bar vertikal untuk mengatakan ini berlangsung selamanya. 1044 00:48:16,460 --> 00:48:18,810 >> Sayangnya, Anda tidak bisa benar-benar melakukan itu di komputer. 1045 00:48:18,810 --> 00:48:20,400 Dan kasus sudut muncul. 1046 00:48:20,400 --> 00:48:23,120 Misalnya, Anda melakukan sesuatu keuangan. 1047 00:48:23,120 --> 00:48:25,700 Kau melakukan matematika dengan persentase, dan 1048 00:48:25,700 --> 00:48:27,030 dengan dolar dan sen. 1049 00:48:27,030 --> 00:48:29,230 Dan orang-sen tidak tentu berbaris. 1050 00:48:29,230 --> 00:48:34,120 Nah, ternyata bahwa fraksi uang dapat mulai menambahkan hingga saat 1051 00:48:34,120 --> 00:48:37,250 dimodelkan dengan sistem komputer sedemikian rupa sehingga pintar 1052 00:48:37,250 --> 00:48:39,100 manusia dapat mengambil keuntungan. 1053 00:48:39,100 --> 00:48:42,650 >> Dan bagi anda yang belum melihat, aku akan ingin memberikan teaser 30 detik dari 1054 00:48:42,650 --> 00:48:48,290 sebuah film indah yang dikenal sebagai Office Space, yang akan melukis gambar dari 1055 00:48:48,290 --> 00:48:51,205 masalah yang kita harus mengatasi Hal pertama pada hari Senin. 1056 00:48:51,205 --> 00:48:53,960 Jika kita dapat meningkatkan volume sedikit, aku memberikan 30 1057 00:48:53,960 --> 00:48:55,495 detik Office Space. 1058 00:48:55,495 --> 00:48:55,770 >> [VIDEO PEMUTARAN] 1059 00:48:55,770 --> 00:48:59,000 >> -Maksudku, kau, kau belum menunjukkan dan Anda mendapatkan untuk menjaga pekerjaan Anda. 1060 00:48:59,000 --> 00:49:00,620 >> -Sebenarnya, aku sedang dipromosikan. 1061 00:49:00,620 --> 00:49:03,240 >> -Saya bisa memprogram virus yang akan rip tempat itu off waktu besar. 1062 00:49:03,240 --> 00:49:04,430 >> -Nah, bagaimana cara kerjanya? 1063 00:49:04,430 --> 00:49:06,782 >> -Setiap kali ada transaksi Bank dimana bunga dihitung, dan ada 1064 00:49:06,782 --> 00:49:10,160 ribuan sehari, komputer berakhir dengan ini pecahan dari satu sen. 1065 00:49:10,160 --> 00:49:12,030 >> -Tapi aku tidak akan melakukan sesuatu yang ilegal. 1066 00:49:12,030 --> 00:49:12,660 >> -Illegal? 1067 00:49:12,660 --> 00:49:15,075 Samir, ini adalah Amerika. 1068 00:49:15,075 --> 00:49:16,570 >> -Kita harus bersumpah demi Tuhan. 1069 00:49:16,570 --> 00:49:19,070 >> -Jika tidak ada yang tahu tentang hal ini tapi kita, oke? 1070 00:49:19,070 --> 00:49:21,920 Tidak ada anggota keluarga, tidak ada pacar, siapa-siapa. 1071 00:49:21,920 --> 00:49:22,700 >> -Tentu saja. 1072 00:49:22,700 --> 00:49:23,320 >> -Setuju. 1073 00:49:23,320 --> 00:49:24,280 >> -Jangan khawatir, pria. 1074 00:49:24,280 --> 00:49:25,640 Saya tidak akan memberitahu siapa pun baik. 1075 00:49:25,640 --> 00:49:26,504 >> [END VIDEO PEMUTARAN] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID Malan: Jadi ini, kemudian, adalah CS50, itu Office Space, dan itu semua akan 1077 00:49:30,030 --> 00:49:31,465 masuk akal pada hari Senin. 1078 00:49:31,465 --> 00:49:33,940 Lihat Anda kemudian. 1079 00:49:33,940 --> 00:49:37,880 >> Narator: Pada CS50 berikutnya, Rob menyesuaikan menjadi off 1080 00:49:37,880 --> 00:49:39,130 Paket makan Harvard. 1081 00:49:39,130 --> 00:49:56,160