DAVID J. Malan: Jadi ini adalah CS50. Dan ini adalah CS50 sendiri Colton Ogden, untuk lebih dari siapa musik, Anda dapat download di soundcloud.com/cs50. Jadi hari ini kita fokus semua lebih pada seni pemrograman. Dan kita mengambil tempat kami tinggalkan off pekan lalu, fokus pada Scratch, yang ini bahasa pemrograman grafis. Dan mengambil hal-hal ke tingkat yang lebih rendah, menggunakan pemrograman yang lebih tradisional bahasa yang dikenal sebagai C. Tapi sepanjang jalan, menyadari bahwa ide-ide yang sama kita berbicara tentang Jumat lalu akan kambuh tidak hanya dalam hal ini bahasa C, tetapi dalam banyak setiap lain bahwa kita melihat semester ini. Jadi kita disebut hal ini di sini apa terakhir kali? Ini adalah wakil dari sebuah pernyataan. Jadi kita menyebut pernyataan. Dan itu sesuatu. Ini adalah instruksi bahwa komputer atau Scratch mungkin mengeksekusi. Dan selanjutnya, mari kita juga mulai memanggil sesuatu seperti ini fungsi, untuk alasan yang akan kita lihat. Sementara itu, kita melihat hal-hal seperti ini. Dan ini umumnya dikenal sebagai apa membangun? AUDIENCE: Loop. DAVID J. Malan: Jadi lingkaran. Jadi cukup sederhana. Secara harfiah melakukan apa yang tertulis. Dan di Scratch, jika Anda ingin menjejalkan potongan puzzle lainnya di sana, potongan akan tumbuh untuk menyesuaikan. Dan kita akan melihat di C yang kita dapat melakukan hal yang sama. Tipe lain dari lingkaran, meskipun, di Scratch mungkin selamanya, atau ada sejumlah pendekatan lainnya. Tapi mari kita lebih Penampilan generalis, dengan wajah itu mungkin cukup familiar, di loop lebih umum. Mark Zuckerberg: Satu hal yang komputer benar-benar baik adalah mengulangi perintah. Sebagai seseorang, Anda akan mendapatkan benar-benar bosan jika Anda harus melakukan hal yang sama banyak kali berturut-turut. Tapi komputer dapat melakukan hal yang sama jutaan atau bahkan miliaran kali, dan tidak bosan, dan dapat untuk melakukan itu dengan sangat baik. Jadi misalnya, jika saya ingin berharap semua orang di Facebook selamat ulang tahun dengan mengirimkan email, mungkin membawa saya lebih dari satu abad untuk benar-benar menulis semua email-email kepada semua orang. Tapi hanya dengan beberapa baris kode, saya bisa memiliki sistem mengirim email ke semua orang di Facebook yang ingin mereka selamat ulang tahun. Jadi itulah yang loop dan mengapa mereka berharga dan sesuatu bahwa komputer dapat melakukannya dengan sangat baik. DAVID J. Malan: Jadi, jika Anda sudah penerima beberapa CS50 dan Ruang Dropbox akhir, itu sebenarnya tepat apa yang kita dilakukan, menggunakan kode cukup seperti itu. Kami pada dasarnya memiliki besar spreadsheet mana orang telah memasukkan mereka nama dan alamat email. Dan kami menulis sedikit kode yang dapat iterate atas alamat tersebut dan meludahkan alamat unik di kasus ada yang disampaikan beberapa kali. Dan setelah itu, kami mengirim otomatis email dari bot CS50 ini, termasuk kode kupon. Sekarang kami juga melihat ini membangun terakhir kali. Dan ini adalah khusus contoh dari apa? Jadi, ya, ekspresi Boolean. Dan bentuk yang dimaksud untuk menangkap itu juga. Semua pertanyaan tersebut dari membentuk benar atau salah dalam Scratch akan terlihat sedikit sesuatu seperti ini. Dan kami menyebutnya ekspresi Boolean. Itu memang benar atau salah, ya atau tidak. Ini adalah cara untuk menjawab pertanyaan. Dan Sementara itu Anda dapat menggunakan Boolean ini ekspresi dalam konstruksi seperti ini, yang Tentu saja kondisi atau cabang, pepatah garpu di jalan. Dan mereka dapat melihat tidak hanya seperti ini, tetapi mereka juga dapat telah elses terkait dengan mereka. Dan Anda benar-benar dapat memiliki tiga cara pertigaan jalan atau empat cara garpu di jalan, hanya dengan bersarang hal-hal ini, seperti yang akan Anda lihat dalam Scratch jika Anda belum melakukannya. Dan seperti yang Anda lakukan di C juga. Mari kita generalis lain melihat sebuah alumnist, juga, yang mungkin menyajikan pendekatan yang berbeda untuk hal-hal ini disebut kondisi. BILL GATES: Orang-orang membuat keputusan setiap hari. Misalnya, sebelum Anda pergi di luar Anda jenis memiliki jika pernyataan yang mengatakan, jika hujan maka saya perlu mendapatkan jaket saya. Dan komputer menakjubkan setelah Anda memutuskan orang-orang macam laporan, bahwa mereka dipercaya bisa mengeksekusi hal-hal dengan kecepatan luar biasa. Jadi program komputer yang benar-benar adalah sedikit matematika dan beberapa jika pernyataan di mana keputusan akan dibuat. DAVID J. Malan: Jadi Anda mungkin tahu, itu orang-orang seperti Bill Gates, Paul Allen, dan lain-lain yang benar-benar menggebrak disebut komputer pribadi revolusi beberapa tahun yang lalu. Saya pikir, sebelum kita menyelam ke dalam beberapa administrivia, kita akan berhubungan dongeng dari Albuquerque, New Mexico Museum of Natural History dan ilmu di mana beberapa Bill Gates ' dan cerita Paul Allen awal yang menceritakan bagaimana kita miliki sekarang PC saat ini dan Mac dan banyak lagi. Untuk ini, meskipun, kita perlu dua relawan yang memiliki suara narasi yang sangat baik untuk membaca naskah keras. Baiklah, bagaimana dengan di belakang sana. Ayo up. Dan bagaimana dengan di depan sini. Ayo ke bawah. Mengambil tempat di sini. Seperti kalian datang, pasangan pengumuman administrasi. sectioning, proses memilih bagian, akan memulai ini Rabu sampai Jumat. Lagi di mendatang Rabu dalam perkuliahan. Bagian Super, sementara itu, sesuatu yang kami tawarkan minggu depan dimana seluruh kelas diundang untuk berpartisipasi dalam skala yang cukup besar bagian, satu lebih nyaman, satu kurang nyaman. Dan kami akan mengumumkan ihwal itu, juga, akhir pekan ini. Bagian Sementara itu, sendiri, akan mulai di minggu ketiga tentu saja, indeks nol, yang berarti mereka adalah beberapa minggu out. Jadi tidak perlu khawatir. Anda belum terjawab sesuatu sepanjang garis itu. Sementara itu sementara itu, jika Anda memiliki pertanyaan administratif, email saya dan Devon dan Gabe dan Rob di alamat ini di sini. Terakhir, permasalahan yang 0 adalah, tentu saja, keluar. Anda mungkin telah memperhatikan itu di website program ini. Ini harus menyediakan Anda dengan semua jawaban atas pertanyaan Anda mungkin memiliki sepanjang jalan untuk memulai dengan set masalah. Tetapi jika Anda menemukan diri Anda membutuhkan uluran tangan, dengan segala cara menghadiri jam kantor, Senin, Selasa, Rabu, Kamis minggu ini di malam hari dalam empat ruang makan. Lihat URL yang ada untuk keterangan dari mana jam kantor akan. Sekarang Mari kita bertemu kami dua tamu di sini hari ini. Siapa nama Anda? JAY PAUL: Jay Paul. DAVID J. Malan: Jay Paul, senang bertemu Anda. HIKARI: Hikari. DAVID J. Malan: Hikari? HIKARI: Hikari. DAVID J. Malan: Hikari. Senang bertemu Anda juga. Jay Paul dan Hikari ada di depan mereka pada musik ini berdiri dua script yang saya cetak pagi ini dari New Mexico Museum Sejarah Alam dan Sains. Dan apa yang saya pikir Aku akan lakukan pada biaya overhead adalah menemani pembacaan Anda script dan sejarah ini dengan beberapa gambar visual, tidak ada kejutan. Dan apa yang telah saya lakukan di muka adalah prehighlight pada naskah Anda apa yang harus Anda baca, dan apa yang harus Anda baca. Dan kita pada dasarnya akan paragraf hanya alternatif. Jadi seperti Anda mungkin telah dilakukan di kelas bahasa Inggris. Itu benar-benar memaksa penonton percaya pada kisah Anda di sini. Apakah kita? Jadi cerita di sini adalah, kita memiliki BASIC, dan itu dimulai di Cambridge. JAY PAUL: Saat itu musim dingin, 1974, di Cambridge, Massachusetts di mana musim dingin bisa dingin. A berjenggot, berambut panjang perguruan tinggi putus sekolah bernama Paul Allen drudging di Harvard Square, tenggelam dalam pikirannya. Keasyikan utamanya pada hari-hari adalah bagaimana untuk mendapatkan temannya, Bill Gates, untuk berhenti sekolah dan pergi ke bisnis dengan dia. HIKARI: Dua sudah pergi melalui sejumlah usaha bisnis bersama-sama, mulai dari Lakeside sekolah di Seattle di mana mereka dibayar dalam waktu komputer gratis untuk menguji komputer PDP-10 pada waktu setempat berbagi perusahaan. Rencana terbaru telah berhenti sekolah dan membentuk sebuah perusahaan perangkat lunak. Allen telah meninggalkan Washington Universitas Negeri. Namun pada menit terakhir, Gates memutuskan untuk tetap dengan Harvard. JAY PAUL: Hari itu, melintasi Harvard Square, Allen melihat Januari, Edisi 1975 Popular Electronics dengan judul berhenti bumi, Pertama komputer mini Kit dunia untuk Rival Commercial Models. Di bawah judul itu gambar sebuah kotak kecil dihiasi dengan lampu dan switch. Itu disebut MITS Altair 8800. Dan Allen tahu ini adalah apa yang ia telah mencari-cari. HIKARI: Days diskusi diikuti. Allen dan Gates memahami signifikansi Altair. Mereka sering membicarakan tentang mikroprosesor dan sedang menunggu untuk melihat apa akan dilakukan dengan mereka. Sekarang ada kit komputer mini pada penutup Popular Electronics. Ini rupanya punya software belum. Mereka membayangkan bangsa programmer turun pada MITS. Dan sehingga mereka disebut Ed Roberts, kepala perusahaan, mengaku memiliki versi Bahasa pemrograman BASIC hampir siap untuk Altair. Mereka tidak. Dan Roberts pasti tahu mereka tidak. Dia mendapatkan 10 panggilan per hari dari orang-orang yang memiliki BASIC yang hampir siap. Dan respon sahamnya adalah, "Orang pertama siapa yang muncul dengan kerja yang BASIC mendapat kontrak. " JAY PAUL: Gates dan Allen belum pernah melihat Altair. Mereka belum pernah melihat Intel 8080 mikroprosesor di jantung Altair. Tapi beberapa tahun sebelumnya Allen telah menulis sebuah program pada komputer mainframe yang ditiru pengoperasian Intel sebelumnya mikroprosesor. Dan kali ini mereka akan melakukan hal yang sama. HIKARI: Dengan Intel 8080 panduan di sisinya, Allen duduk di Komputer Harvard PDP-10 dan menulis emulator dan perangkat lunak alat yang diperlukan untuk melakukan pemrograman. Sementara Gates akan berhenti ke kelas dan mengabdikan dirinya untuk merancang BASIC, menggunakan setiap trik ia tahu untuk mendapatkan ukuran di bawah 4 kilobyte. JAY PAUL: Out di Albuquerque, Ed Roberts mendapat telepon dari Gates meminta rincian tentang bagaimana Altair ditangani rutinitas tertentu. Tidak ada yang pernah meminta itu sebelumnya. Dan Roberts mulai tertarik. HIKARI: Dengan pengembangan alat dan desain siap, Gates dan Allen menulis kode pada PDP-10, mendaftar mahasiswa Harvard lain, Monte Davidoff, menulis rutinitas matematika. Setelah malam final pemrograman, Allen naik pesawat untuk memberikan mereka BASIC untuk MITS. Ia menghabiskan pesawat naik keluar mengkhawatirkan. Dan kembali Cambridge Gates khawatir. Mereka telah diuji mereka BASIC dan itu bekerja pada emulator. Tapi bagaimana kalau emulator itu salah? JAY PAUL: Saat pesawat mendekati Albuquerque, Allen menyadari bahwa mereka BASIC, sekarang rapi terkandung pada roll kecil menekan kertas pita, akan menjadi sia-sia tanpa terpisah Program, yang disebut loader, yang akan memberitahu Altair bagaimana untuk membaca pita kertas makhluk dimasukkan ke dalam mesin teletype. Dia mengambil buku catatannya dan cepat menuliskan program loader dalam bahasa Assembly, kemudian secara manual diterjemahkan bahwa ke 1 dan 0 Altair akan mengerti. HIKARI: Allen mengharapkan bersih, sedikit, perusahaan teknologi tinggi dijalankan oleh pria dalam setelan bisnis. Jadi dia terkejut ketika Roberts bertemu dia di bandara tampak seperti sebuah peternakan tangan. Roberts juga terkejut. Ketika ia menjatuhkan Harvard programmer di hotel yang mahal, Allen harus mengakui bahwa ia tidak mampu ruangan. JAY PAUL: MITS, itu sendiri, adalah terletak di mal berdebu. Di dalam pada berantakan meja kerja adalah Altair dimuat dengan 5 kilobyte memori dan dihubungkan dengan kabel ke mesin teletype. Roberts dan Chief Engineer, Bill Yates, menunggu dengan penuh harap sebagai Allen toggle loader nya program ke Altair. Teletype mulai menenggak karena ditarik pita kertas melalui pembaca pita. Butuh waktu mungkin 15 menit memuat program. Kemudian teletype tiba-tiba dicetak memori yang cepat, maka prompt siap, dan Allen mulai mengetik beberapa tes perintah. Untuk takjub semua orang, perangkat lunak bekerja. Ada bug, tentu saja. Tapi hal utama adalah bekerja. HIKARI: Kemudian, dalam perjalanan mereka ke $ 3,00 makan siang di Pancho ini, tawon terbang di jendela pickup truk dan menyengat Allen di lengan. Tapi pada saat itu tidak ada bisa merusak mood. The Altair sekarang memiliki nya BASIC, yang software komersial pertama untuk rumah komputer, yang dibuat oleh Paul Allen dan Bill Gates, melakukan bisnis seperti Microsoft. DAVID J. Malan: Banyak berkat dua pembaca kami. [Tepuk Tangan] DAVID J. Malan: Sekarang Anda memiliki pilihan Anda, sebelum Anda meninggalkan, dari gemerlapan atau cahaya di dark-- oh, tunggu satu detik, wait-- gemerlapan dan cahaya dalam gelap gajah dari CS50 sendiri Cheng Gong. HIKARI: Aw, terima kasih. DAVID J. Malan: Semua benar, terima kasih banyak. [Tepuk Tangan] DAVID J. Malan: Kisah Jadi benar. Hal ini untuk mengatakan bahwa semua ini mesin dan kemudahan yang kita menggunakannya sekarang dan mengambil begitu saja, benar-benar mulai di sini, hanya beberapa langkah dari teater yang sebenarnya ini. Dan sekarang hari ini, jika Anda sudah tidak, ini adalah Maxwell Dworkin, komputer bangunan ilmu, juga di sudut. Dan di lantai dua ini bangunan tidak menggantung tiga halaman dari kode sumber asli yang Bill Gates dan Paul Allen menulis. Bahkan, jika menggunakan Anda tampilannya di Anda dapat melihat tidak hanya nama mereka dalam Jenis asli, tetapi juga tanda tangan mereka bahwa mereka menghiasi beberapa tahun yang lalu ketika mereka terakhir dikunjungi. Tapi apa yang sangat menarik tentang hal ini adalah apa yang mereka mulai lakukan adalah untuk menulis sebuah program yang akan memungkinkan orang lain untuk menulis program mereka sendiri. Pada saat itu semua ada dengan mesin Altair ini dibuat oleh MITS. Dan semua yang mereka butuhkan adalah beberapa cara sehingga mudah untuk penggemar dan orang-orang seperti kita di ruangan ini untuk benar-benar program yang bahwa tanpa harus memahami Assembly, atau mesin kode, atau Tuhan melarang, 0 dan 1. Kami programer, seperti mereka di ruangan ini, kami ingin dapat mengekspresikan diri lebih seperti pseudo code bahkan jika itu sedikit lebih nit pemilih daripada kita berbicara minggu lalu. Kami tidak ingin menulis kode seperti ini, yang Paul Allen dan Bill Gates lakukan. Kami, sebaliknya, ingin menulis kode yang terlihat sedikit lebih user friendly. Sekarang ini adalah bahasa yang dikenal sebagai BASIC. Dan nomor baris ada apa yang Anda gunakan untuk hanya nomor baris kode bahwa Anda sedang menulis. Kami bahkan tidak perlu melakukan itu hari ini. Tapi Anda bisa lihat di sini bagaimana PRINT "Halo, dunia" akan memang mungkin mencetak hanya itu. Dan jadi apa Bill dan Paul lakukan adalah memberdayakan orang untuk menulis kode seperti ini bukan of-- jika anda melihat pada ilmu komputer wall-- kode seperti ini. Bahkan, baru-baru CS50 memiliki kesempatan duduk dengan Profesor Harry Lewis di Ilmu Komputer departemen, yang benar-benar mengajarkan Bill Gates beberapa tahun yang lalu, dan berdiri di sini sebelum tiga halaman kutipan. Mari kita lihat. HARRY LEWIS: Apa yang Anda miliki di sini adalah daftar sepotong awal software ditulis oleh Bill Gates dan Paul Allen, pendiri Microsoft. Jadi kode menarik karena dua alasan. Pertama-tama, itu menjadi Produk pertama Microsoft, yang seorang juru bahasa untuk bahasa pemrograman BASIC. Dan kedua, ini adalah salah satu upaya pertama untuk menciptakan seorang juru begitu biasa orang bisa menggunakan komputer pribadi. Jadi Bill Gates adalah sarjana di Harvard. Saya mulai mengajar di Harvard pada tahun 1974. Hal ini dilakukan pada tahun 1975. Jadi itu awal karirnya dan awal karir saya. Aku benar-benar mengajar Bill di kursus sekitar waktu ini. Paul Allen bukanlah Harvard mahasiswa, tapi dia telah menjadi sekolah tinggi sekelas Bill Gates. Jika Anda datang dan melihat di daftar, Anda akan benar-benar menemukan sepertiga Nama, Monte Davidoff, yang sekelas Gates di sini di Harvard. OK, jadi inilah yang menarik komentar di sini. Ia mengatakan "Di 4K dapat menghapus akar kuadrat tapi untuk loop harus tetap bekerja. " OK, jadi apa itu artinya bahwa ada dua cara untuk mengkompilasi program ini. Salah satunya adalah untuk berjalan pada versi komputer Altair ini yang hanya memiliki 4K kata-kata memori, 4,096 kata memori. Tapi versi besar memiliki 8K. Dan jadi apa ini, dapat dikatakan bahwa dalam versi 4K Anda harus menghapus beberapa kode untuk membuatnya fit. Dan salah satu hal yang akan dihapus akan menjadi rutinitas akar kuadrat. Tapi rupanya untuk loop harus tetap bekerja bahkan ketika Anda kompilasi bawah hanya versi 4K komputer. DAVID J. Malan: Jadi salah satu tema, seperti yang akan kita lihat dalam ilmu komputer, adalah gagasan dari layering dan abstraksi, dan benar-benar berdiri di bahu orang-orang yang datang sebelum kita, tidak tidak seperti beberapa Bill Gates dan Paul Allen narasi sini. Dan apa ini berarti bahwa hari ini kita dapat mengambil untuk saja bahwa hal-hal yang benar-benar mudah bagi kita untuk menulis kode. Memang kode, seperti yang kita katakan pada hari Jumat, adalah secara teknis dikenal sebagai kode sumber. Dan itu bahasa Inggris ini seperti sintaks yang lebih tepat dan didefinisikan lebih baik daripada sesuatu seperti pseudo code, untuk yang tidak ada definisi formal. Dan hari ini apa kita akan untuk fokus pada kode sumber yang terlihat seperti ini, yang diakui pada pandangan pertama tampak benar-benar samar. Dan terus terang, itu cara yang lebih estetis kompleks daripada program yang mendasari. Semua program ini tidak, ingat, adalah apa yang kita katakan? Itu hanya mencetak "hello world." Namun melihat semua hal-hal yang kita butuhkan untuk membungkus itu ungkapan yang sangat sederhana. Tapi tak lama semua garis-garis ini dan lebih akan masuk akal jauh lebih baik untuk Anda. Dan aliran adalah sebagai berikut. Apa yang kita butuhkan kita miliki adalah untuk mengambil kode, seperti sumber kode yang baru saja kita lihat. Dan kita membutuhkan sebuah program baru menjalankannya melalui. Kita perlu algoritma yang dapat mengkonversi kode sumber, seperti ini, ke dalam kode obyek, 0 dan 1. Dengan kata lain, apa yang kita akan pelajari hari ini adalah bagaimana untuk melakukan hal ini, menulis source code di bagian atas, lulus sebagai masukan untuk khusus Program yang dikenal sebagai compiler, dan kita akan menghasilkan kode obyek. Yang hanya cara mewah mengatakan kita akan mengambil sesuatu yang terlihat seperti ini, lulus menjadi sebuah program yang disebut compiler, menghasilkan kode objek yang terlihat seperti ini. Jadi ini benar-benar pola 0s dan 1s yang dipahami oleh Komputer Intel hari ini, bahwa jika diinterpretasikan oleh CPU, otak dalam komputer, akan benar-benar mencetak, cukup sederhana, "hello world." Sekarang ada cara yang lebih 0s dan 1s dari Anda berharap mungkin diperlukan untuk itu. Tapi itu karena kita sedang membangun pada banyak kompleksitas bahwa kita selanjutnya dapat mengambil untuk diberikan. Dengan kata lain, banyak orang pintar telah memberikan kita banyak alat keren dan perangkat lunak yang kuat yang kita sekarang dapat membuat proyek-proyek kita sendiri. Jadi mari kita mulai. Sedangkan Jumat lalu, dan untuk Masalah Set 0 minggu ini, Anda akan bermain dalam dunia yang terlihat seperti ini. Mulai hari ini dan untuk Masalah Set 1 minggu depan, kode akan terlihat sedikit lebih samar, tetapi secara fungsional adalah akan menjadi sama. Jadi pemberitahuan, atas adalah Scratch, bawah adalah C. Terus terang Scratch lebih banyak pengguna ramah dan mudah diakses. Tetapi jika Anda sekarang membandingkan secara visual atas ke bawah, ada semacam 00:59 korespondensi antara potongan puzzle dan bahasa kami tidak akan bermain dengan. Secara khusus, mengatakan, puzzle biru sepotong bagian atas, tampaknya setara dengan apa kata kunci atau frase khusus dalam bahasa ini disebut C? AUDIENCE: printf. DAVID J. Malan: printf. Itu berarti pencetakan diformat. Dan itu hanya suka cara untuk mengatakan printf di C akan menjadi pernyataan atau fungsi yang mencetak sesuatu ke layar. Apa mencetak ke layar? Apa pun yang Anda kirim ke dalam kutipan, di dalam tanda kurung. Jadi sekali lagi, harus diakui, ada banyak hal bahwa Anda harus diingat, kurung, tanda kutip, titik koma, dan semua ini. Namun semua itu adalah semacam dari intinya. The takeaway menarik untuk saat ini adalah bahwa blok suara dalam Scratch cukup banyak setara dengan pernyataan printf di C. Sementara itu, potongan puzzle kuning di bagian atas, ketika bendera hijau diklik, mungkin setara apa kata kunci di sini? AUDIENCE: Main. DAVID J. Malan: Jadi utama. Mungkin int, mungkin tidak berlaku. Tapi jenis utama suara seperti penting, dan memang itu. Jadi ketika bendera hijau diklik adalah, sekali lagi, potongan puzzle yang kicks off seluruh program Scratch. Tapi kita akan sekarang mulai menelepon yang utama, fungsi ini dikenal sebagai utama. Sekarang sementara kita akan generalisasi ini sebagai berikut. Kita sebut mengatakan fungsi. Dan mungkin terlihat khusus seperti ini. Nah, bagaimana dengan loop? Jika kita ingin memulai mengubah atau menerjemahkan lebih Scratch ke C, hal ini di sini tampaknya hanya mengatakan "hello world" selamanya. Jadi jika Anda mengasosiasikan ini script dengan kucing di Scratch, itu hanya akan terus mengatakan dalam beberapa jenis gelembung kartun, "Hello world, hello world, halo dunia, "nauseum iklan, selamanya. Jika kita ingin melakukan sesuatu yang serupa di C, itu akan terlihat sedikit samar. Tapi kita bisa mencapai hal yang sama hasil, seperti yang akan kita akhirnya cari tahu, dengan sintaks seperti ini. Aku akan menggunakan printf lagi, karena pada akhir hari Saya ingin mencetak "hello world." Dan aku tampaknya menggunakan kata kunci yang tidak selamanya. Ini bukan kata sementara. Tapi semantik di Inggris, sementara jenis menyarankan beberapa jenis lingkaran atau siklus. Sehingga terjadi menjadi kata kunci yang menggunakan C. Dan sementara benar, mengapa saat benar efektif berarti selamanya? Nah, sementara, karena kita akan segera menghargai semua lebih, memiliki sisipan ini sebelahnya di mana Anda dapat menempatkan sebuah ekspresi Boolean. Dan selama itu ekspresi benar, kode ini, seperti yang ditunjukkan antara kedua kurung kurawal karena kami akan memanggil mereka, hanya akan tetap berjalan lagi dan lagi. Jadi yang benar adalah benar. Jadi sementara cara yang benar hanya melakukan ini selamanya. Ini hampir bodoh membangun untuk mengekspresikan diri. Tapi tidak ada selamanya kata kunci dalam C. Ada sementara. Dan ada yang sangat sederhana Ekspresi Boolean seperti benar. Dan jadi ini, kita akan melihat, mencapai hasil yang sama. Bagaimana lagi Anda mungkin menerapkan satu lingkaran? Nah, di Scratch Anda mungkin kode keras nomor tertentu iterasi pada loop di sini. Dan itulah apa yang kita mungkin dilakukan di versi ini C, dimana kita memiliki apa yang disebut untuk loop. Dan untuk loop di sini akan untuk iterate, agak samar, dari nilai 0 ke atas untuk tetapi kurang dari 10. Sekarang variabel dalam Scratch. Anda mungkin tidak memiliki kesempatan untuk menggunakan ini. Tapi apa gunanya, secara umum, variabel yang kita katakan minggu lalu? Apa itu? AUDIENCE: Poin. DAVID J. Malan: Untuk menunjukkan? Oh, poin. OK, melacak poin, misalnya, dalam sebuah permainan. Atau lebih umum melakukan apa dengan variabel? Apa kegunaan mereka? AUDIENCE: Memory. DAVID J. Malan: Ya, jadi memori. Ini untuk menyimpan sesuatu. Dan jenis konyol visual yang saya gunakan terakhir kali adalah seperti mangkuk kaca ini. Dan jika kita ingin menyimpan sesuatu di dalam variabel, misalnya sekarang yang nilai enam karena ada enam bola ping pong di sini. Ini hanya beberapa jenis penyimpanan wadah yang di bawah tenda diimplementasikan dengan bit, 0 dan 1, Namun komputer terjadi untuk melakukan itu. Jadi dalam Scratch, jika kita ingin memiliki variabel, kita dapat menggunakan blok oranye seperti ini. Kami akan menelepon counter yang dalam kasus ini. Aku diinisialisasi ke 0. Dan apa yang kemudian saya lakukan? Selamanya, mengatakan counter, yang jika Anda bermain dengan itu dalam Scratch, Anda hanya akan melihat Scratch. Kucing atau kostum apa pun yang Anda memakai dia akan berbicara nomor yang bersangkutan. Ubah kontra dengan 1 adalah seperti incrementing oleh 1. Dan jadi ini akan menghitung dari apa jadi apa? Dari 0 til infinity, atau sampai Scratch istirahat, atau sampai Anda semacam kehilangan minat dalam menonton seberapa tinggi dia benar-benar bisa menghitung. Jadi bagaimana mungkin kita mengubahnya ke C? Ini akan terlihat sedikit samar. Tapi sekali lagi, jika Anda melihat masing-masing baris ini secara individual mereka jenis lineup umumnya. Jadi rupanya int akan memiliki beberapa arti khusus dalam C. Kita akan melihat itu lagi. Sebagai samping itu berarti integer. Jadi itu hanya berarti nomor. Jadi itulah jenis kaca mangkuk saya inginkan, satu yang dapat menyimpan nomor, tidak ping pong bola. Dan aku akan menggunakan tanda sama ada untuk menetapkan nilai 0. Jadi itu cukup seperti set ke 0, tetapi di C. Sementara itu, sementara benar, itu setara, tentu saja, untuk selamanya, meskipun itu sedikit samar, dan kemudian dalam kurung kurawal. Dan Anda bisa memikirkan ini kurung kurawal, yang Anda dapat mengetik pada keyboard Anda, sebagai benar-benar menjadi seperti kelengkungan di ini blok lingkaran kuning di Scratch. Ini mencakup beberapa baris kode. Printf adalah mendapatkan sedikit menakutkan sekarang karena saya melihat tidak hanya mengutip dalam tanda kurung. Tapi apa lagi yang baru sintaksis dalam contoh ini? Ada persen d. Dan kemudian backslash n ada. Kita memang melihat itu sebelumnya, bahkan meskipun saya tidak menyebutkan itu. Lalu ada koma. Dan kemudian ada counter. Tapi kita akan melihat hanya dalam saat itu ini hanya cara standar untuk mengatakan mencetak "Angka desimal," kutipan, tanda kutip, beberapa angka desimal. Tapi aku akan memberitahu Anda nanti apa itu angka desimal. Jadi fakta bahwa ada koma di baris ini mengatakan printf, berarti pergi ke depan dan mencetak beberapa angka desimal. Oh, dan omong-omong, jumlah ini apapun nilai variabel ini. Dan sehingga untuk membuat ini lebih jelas, kita akan melihat contoh tak lama melibatkan persis printf dalam konteks program-program nyata C. Sekarang hanya untuk membungkus beberapa dari konstruksi tersebut. Ekspresi Boolean, Anda mungkin tidak memiliki kesempatan untuk menggunakan ini dalam program Anda tapi Anda mungkin sangat baik, terutama jika menggunakan kondisi. Dan jadi ini dua contoh dari Gores artinya jika x kurang dari y, atau jika x kurang dari y dan y kurang dari z, bagaimana kita bisa menerjemahkan itu? Nah, di C itu hanya akan terlihat seperti ini. Sedikit samar, lebih kurung, beberapa ampersands aneh, tetapi pada dasarnya ide-ide yang sederhana seperti mereka berada di dunia potongan puzzle. Kami hanya memeriksa apakah sesuatu kurang dari sesuatu yang lain. Bagaimana kondisi? Singkatnya dalam bahasa Inggris, apa ini serangkaian kode Scratch yang akan Anda katakan? AUDIENCE: Membandingkan dua angka. DAVID J. Malan: Membandingkan dua angka, dan jika x kurang dari y ia mengatakan sebanyak. Jika x lebih besar dari y ia mengatakan sebanyak, lain jika x sama dengan y dikatakan sebagai banyak. Sekarang mana x dan y berasal? Siapa tahu. Ini sepotong Scratch kode adalah di luar konteks. Tapi apa yang ingin kita lakukan sekarang adalah menerjemahkan ini untuk sesaat untuk melihat. Sehingga Anda merasa nyaman minggu ini pada Soal Set 0 bermain di dunia ini di sebelah kiri, menyadari bahwa ide-ide yang tidak berubah minggu ini atau berikutnya atau lebih. Kami hanya akan mulai menulis hal-hal dengan cara yang berbeda dengan kami keyboard bukan mouse kita. Jadi, jika x kurang dari y, dan ada beberapa tanda kurung di sana, kemudian ada beberapa kurung kurawal lagi untuk jenis merangkum seperti potongan puzzle kuning dilakukan. Dan aku akan printf x kurang dari y dan sebagainya. Apa yang baik tentang C, seperti yang Anda lihat di sini, adalah bahwa Anda tidak mendapatkan bersarang ini, bersarang, bersarang itu tentu akan mendorong kode Anda ke kanan. Anda malah bisa memiliki segalanya lineup rapi seperti ini. Tapi itu hanya sebuah estetika detail kita akan melihat lagi sebelum lama. Baiklah. Jadi yang membawa kita kembali ke samar melihat program ini. Mari kita benar-benar menulis beberapa kode. Sekarang bagaimana Anda pergi tentang menulis kode? Bertahun-tahun yang telah Anda dimiliki Mac atau PC, desktop atau laptop, Anda sudah benar-benar memiliki kemampuan untuk mulai menulis kode pemrograman. Tapi Anda mungkin hilang jenis khusus dari program. Anda pasti bisa menulis kode. Tapi Anda tidak bisa selalu, keluar dari kotak, mengkonversi kode sumber ke dalam kode obyek, 0 dan 1 tanpa apa pada komputer Anda? AUDIENCE: Compiler. DAVID J. Malan: Jadi compiler, kan. Sekarang sebagian dari Anda mungkin tidak memiliki kompiler, tidak pernah download kompilator. Tapi Anda akan melihat Anda dapat men-download seperti kebanyakan setiap bagian lain dari perangkat lunak. Dalam dunia Mac OS, Anda mungkin download atau telah di-download sudah sesuatu yang disebut Xcode atau GCC atau dentang. Jika Anda datang dari Jendela dunia Anda mungkin telah di-download Visual Studio, Visual Basic, lingkungan seperti itu. Ada puluhan kompiler hari ini yang mungkin Anda gunakan. Tapi pendek itu di sini adalah bahwa hal itu akan menjadi sakit dan, terus terang, teknologi mimpi buruk bagi ratusan orang dengan berbeda konfigurasi komputer untuk semua mengkonfigurasi mesin mereka dengan cara yang persis sama sehingga kita semua bisa pada halaman yang sama. Jadi apa yang kita, sebagai gantinya, lakukan di CS50 adalah kita memberikan lingkungan standar, Linux lingkungan yang akan terlihat sedikit sesuatu seperti ini. Anda akan melihat lebih banyak dari ini di Masalah Set 1 spesifikasi yang akan pergi online Jumat malam ini. Dan apa artinya ini adalah bahwa Anda selanjutnya akan dapat men-download dan menginstal sebuah program disebut CS50 Appliance. Dan Anda akan men-download dan menginstal program lain yang disebut hypervisor, yang hanya cara mewah untuk mencapai hal ini. Apakah Anda memiliki Mac atau PC atau Linux komputer atau komputer Solaris, atau gila operasi apapun Sistem Anda menjalankan, Anda akan men-download program disebut hypervisor yang akan menjalankan CS50 Peralatan pada komputer Anda tidak peduli apa sistem operasi Anda. Sebuah hypervisor dengan kata lain mengubah barang-barang kami ke bahasa apa pun, Instruksi Anda apa pun komputer sendiri mengerti. Jadi ini adalah layering a. Dan lagi, ini adalah jenis tematik di komputer ilmu pengetahuan, bangunan di atas hal. Anda mungkin memiliki Windows. Anda mungkin memiliki Mac OS. Tapi mulai minggu depan Anda akan telah men-download sebuah software gratis disebut hypervisor. Kau akan telah men-download sepotong perangkat lunak yang disebut CS50 Appliance. Itu akan berjalan dalam hypervisor, yang akan dijalankan pada komputer Anda. Dan hasil akhirnya adalah bahwa kita semua akan memiliki jendela sederhana seperti ini pada Mac atau PC yang memberi kita ilusi semua menjalankan sistem operasi yang sama, tanpa lainnya dampak pada komputer Anda. Dan Anda bisa layar penuh dan pada dasarnya berperilaku seolah-olah Anda sedang menjalankan sistem operasi yang disebut Linux, yang adalah apa yang CS50 Peralatan didasarkan pada. Jadi mari kita benar-benar menggunakan ini sekarang untuk menulis sebuah program. Anda dapat menulis sebuah program menggunakan Microsoft Word. Anda dapat menulis sebuah program menggunakan TextEdit, atau Notepad, atau WordPad, atau hampir semua kata program pengolah Anda pernah menggunakan. Tetapi kenyataannya adalah Anda tidak harus menggunakan benar-benar salah satu dari mereka program. Anda tentu tidak harus menggunakan sesuatu seperti Microsoft Word, yang memiliki menghadap dan garis miring tebal, dan font besar dan font yang lebih kecil, karena komputer tidak peduli semua itu. Semua komputer akan pedulikan adalah Inggris seperti instruksi tertulis di C. Jadi apa yang akan kita lakukan dalam dari Appliance CS50 adalah menggunakan program bebas tersedia, dan itu pra-instal dalam alat, yang disebut Gedit. Dan Gedit hanya super sederhana Editor teks seperti Mac OS TextEdit, seperti Windows Notepad yang akan terlihat sedikit sesuatu seperti ini. Jadi mari kita sebenarnya tidak melihat slide ini. Tapi mari kita benar-benar pergi ke lingkungan itu sendiri. Aku akan pergi ke depan dan login, pada window lain ini, untuk saya CS50 Appliance, yang saya sudah pra-instal di laptop saya di sini. Perhatikan bahwa, seperti Windows dan Mac OS, itu punya beberapa menu. Seperti Windows menempatkan itu di sana sebagai gantinya Mac OS, yang menempatkan di sana. Tetapi kenyataannya adalah itu semua jenis yang sama. Dan di sini adalah keseluruhan sekelompok perangkat lunak. Ada Dropbox. Ada sejumlah besar aksesoris, program grafis yang kita akan gunakan nanti dalam jangka untuk masalah set. Ada web browser built in sehingga bahwa ini adalah komputer matang penuh dalam komputer. Tapi aku akan klik ini paling kiri icon putih di sini, yang merupakan ikon untuk Gedit. Dan itu akan membuka jendela yang memiliki tiga panel untuk itu, satu kiri, satu atas, dan yang bawah. Sekarang dalam satu atas hak ini yang Aku akan benar-benar menulis beberapa kode. Jadi mari kita lakukan ini ,. Aku akan pergi ke File, Save. Dan Anda mungkin tidak pernah melihat window tertentu sebelumnya. Tapi ini seperti Mac OS atau Windows. Ini hanya jendela dengan semua folder bahwa saya memiliki dalam komputer ini. Dan aku akan menyimpan file sebagai hello.c. Dan aku akan pergi depan dan klik Save. Dan sekarang melihat saya memiliki tab di sebelah kiri atas disebut hello.c. Jadi mungkin cukup akrab bahkan jika Anda tidak sudah menggunakan program khusus ini sebelumnya. Dan sekarang aku akan mengetik pada mereka urutan cukup samar perintah bahwa kita melihat beberapa saat yang lalu. Sertakan, standar I / O.h. Lebih lanjut tentang segera itu. Int void main, terbuka keriting brace, brace menutup keriting. Dan kemudian dalam sana saya pikir di mana kita memiliki "hello world," titik koma. Dan sekarang simpan. Jadi ini adalah program yang ditulis dalam C, ditulis, oleh karena itu, dalam kode sumber. Tapi aku tidak bisa menjalankan program ini. Aku agak ingin melipatgandakan klik pada ikon di suatu tempat, tapi tidak ada icon ada lainnya dari file kode sumber. Apa, sekali lagi, adalah proses yang sekarang Aku perlu menjalankan file ini melalui? AUDIENCE: Compiler. DAVID J. Malan: Jadi kompilator. Jadi dalam komputer yang berbeda Anda melakukan hal ini dengan cara yang berbeda. Tapi apa yang kita lakukan di sini di Appliance CS50 yang wakil dari bagaimana Anda mungkin melakukan hal ini pada banyak sistem yang berbeda, adalah aku hanya akan menjalankan perintah yang disebut make. Dan membuat secara harfiah akan melakukan itu. Membuat saya program. Sehingga membuat akan menjalankan kompiler bagi saya. Dan nama program Saya ingin membuat adalah halo. Sekarang buat adalah sebuah program. Dan membuat cukup untuk cerdas menyadari bahwa jika saya katakan membuat halo, itu akan terlihat secara otomatis untuk file bernama hello.c hanya karena itulah cara itu dikonfigurasi. Jadi ketika saya sekarang tekan Enter sini, ini garis samar gila baru saja dieksekusi. Dan percayalah, sebelum panjang, dalam waktu hanya beberapa hari, Anda akan mengerti apa semua itu omong kosong berarti. Tapi untuk saat ini, hanya tahu bahwa membuat eksekusi dipicu dari kompilator. Dengan kata lain, ia menemukan compiler di komputer saya itu pra-instal pada Appliance CS50 bahwa kita akan menyerahkan kepada Anda dalam Masalah Set 1. Dan kemudian mengambil hello.c sebagai input, dan menghasilkan rupanya 0 dan 1 sebagai output. Dan secara default apa yang dilakukannya adalah menghemat mereka 0s dan 1s dalam file yang disebut halo. Dan meskipun sintaks ini juga mungkin baru bagi Anda, hanya dengan mengatakan dot slash hello akan menjadi sarana yang saya menjalankan program ini. Untuk saat ini dan untuk beberapa setidaknya minggu, hampir semua program kita menulis akan berada di jendela teks hitam dan putih. Tidak ada tikus, tidak ada klik, tidak ada jendela, tidak ada ikon. Kita akan tetap sederhana dan fokus pada ide-ide yang mendasari awalnya sebelum kita sampai ke sesuatu tingkat yang lebih tinggi, misalnya, seperti istirahat keluar permainan yang kita bicarakan tentang di kuliah pertama pekan lalu. Jadi, ketika saya tekan Enter sini, itu setara dalam teks saja lingkungan untuk menggandakan mengklik ikon yang disebut halo. Apa yang Anda harapkan akan terjadi ketika saya tekan Enter kemudian? AUDIENCE: Ini akan mencetak "hello world." DAVID J. Malan: Semoga akan mencetak "hello world." Dan memang hal itu. Sekarang sudah ada beberapa sintaks samar di sini. Mari kita mundur hanya saat dan melihat apakah kita tidak dapat memulai menyimpulkan hanya dengan bermain-main, mencoba dan gagal, seperti apa yang terjadi di sini. Bagaimana jika saya menyingkirkan backslash n? Sekarang beberapa dari Anda yang sudah diprogram sebelumnya mungkin langsung tahu apa artinya. Tapi bagi anda yang sudah tidak pernah diprogram sebelumnya, setidaknya berpikir untuk diri sendiri apa yang terjadi untuk mengubah ketika saya jalankan program ini? Jadi aku akan kembali ke saya sedikit jendela hitam dan putih, yang adalah jendela di mana Saya dapat mengkompilasi ini. Aku akan mengkompilasi ulang halo. Kita akan melihat hal yang sama urutan samar perintah. Dan aku akan melakukan dot slash halo. Dan sekarang seseorang, jika Anda mau, siapa yang pernah diprogram sebelumnya, apa yang mungkin berbeda kali ini? Ya. AUDIENCE: Ini tidak akan berhenti printing "hello world." DAVID J. Malan: Ini akan untuk-- maaf? AUDIENCE: Ini tidak akan berhenti mencetak itu? DAVID J. Malan: Tidak akan berhenti mencetak "hello world." Jadi bukan ide yang buruk. Ide lain? Ya. AUDIENCE: Pesan Error? DAVID J. Malan: Error pesan, OK, bisa. Apa lagi? AUDIENCE: Mungkin mencetak braket dengan titik koma juga? DAVID J. Malan: Mungkin mencetak braket dengan titik koma juga. Jadi mungkin backslash itu maka beberapa jenis terminous yang penting. Setiap pikiran lain? Jadi semua ide yang baik. Dan pada kenyataannya, itu akan menjadi pesan kesalahan. Itu mungkin yang paling mungkin menjadi jawaban secara umum untuk beberapa minggu ke depan seperti yang kita belajar kode di sini. Tapi untuk saat ini mengingat bahwa komputer hanya melakukan apa yang Anda katakan mereka lakukan. Banyak seperti kacang konyol mentega dan contoh jelly. Komputer manusia kami hanya harus untuk melakukan apa yang Anda katakan kepada mereka untuk dilakukan. Jadi dalam hal ini, jika Anda tidak memberitahu komputer untuk memindahkan kursor yang berkedip ke baris berikutnya, itu tidak akan melakukannya. Jadi ketika saya menjalankan program ini sekarang, melihat perbedaan. Sepertinya bug. Ini adalah bug estetika, mungkin. Tapi apa yang berbeda tentang hal ini Output versus terakhir jelas? Ya. AUDIENCE: Itu tidak melakukan baris baru. DAVID J. Malan: Itu tidak melakukan baris baru. Sekarang anda yang memiliki halaman web mungkin dibuat sebelumnya, Anda mungkin tahu dari BR tag atau tag paragraf, sangat mirip dalam roh. Sebuah web browser akan mengabaikan Anda sampai Anda mengatakan itu persis apa yang harus dilakukan. Demikian pula, adalah bahasa seperti C hanya akan melakukan apa yang Anda kirim dapat dilakukan. Jadi alasan bahwa semua contoh ini, sejauh ini, memiliki jenis santai memiliki backslash ini di sana, itu berarti dengan mana Anda mengekspresikan diri sebagai karakter baris baru, sehingga untuk berbicara. Dan Anda dapat jenis menghargai, mungkin, bahwa ini akan terlihat agak bodoh jika tidak ada lagi. Jika saya ingin baris baru, hanya menekan Enter dan kemudian jenis dari menyembelih kode seperti itu harus benar-benar menggosok Anda dengan cara yang benar. Dan bahkan jika Anda tidak benar-benar peduli pada titik ini, Anda akan menyadari bahwa ini bukan terutama tampan potongan kode. Dan jadi apa dunia tahun lalu memutuskan adalah bahwa ketika Anda ingin menempatkan kursor ke baris baru secara eksplisit, Anda secara eksplisit harus mengatakan baris baru, backslash n. Dan ada beberapa lainnya simbol seperti itu. Tapi untuk saat ini kita hanya akan fokus pada backslash n. Sekarang mari kita membuat program sedikit lebih menarik. Aku akan pergi ke depan dan kali ini membuka file baru. Aku akan menyimpan ini sebagai halo-1.c. Dan hanya untuk iseng, aku akan pergi memasukkannya ke dalam folder Dropbox saya. Seperti yang akan Anda lihat dalam CS50 dokumentasi untuk alat, akhir pekan ini untuk Masalah Set 1, kita akan mendorong Anda menggunakan Dropbox atau beberapa layanan yang setara, karena maka semua kode Anda akan didukung secara otomatis. Dan jadi itu sebabnya aku sudah pergi ke folder ini di sini. Dan sekarang aku akan menulis Program yang sedikit berbeda. Sertakan, standar I / O.h, int void main. Dan kemudian di sini printf, hello world, yang persis sama seperti sebelumnya. Tapi sekarang saya ingin mencetak sesuatu yang sedikit berbeda. Saya ingin mencetak, mengatakan, "Halo, David." Baiklah, jadi jelas, seharusnya mudah-mudahan menjadi kasus bahwa jika saya ulang program ini, jalankan itu, itu akan mengatakan "halo, David." Tapi bagaimana jika saya ingin memperkenalkan semacam ini variabel, gagasan wadah yang akan untuk menyimpan D-a-v-i-d dan kode itu tidak sulit ke dalam program saya. Nah bagaimana jika saya mulai melakukan sesuatu seperti ini? String s, jadi ini adalah variabel. Jika Anda ingin string, a.k.a. kata atau frase. Sebuah urutan karakter yang kita dalam pemrograman memanggil string. Kami hanya akan umum panggilan itu s, karena itu adalah nama sederhana yang bagus. Tapi aku bisa menyebutnya apa pun. Aku akan mengatakan sama dengan string s kutipan tanda kutip, "David," titik koma. Dan sekarang saya ingin memasukkan D-a-v-i-d ke apa yang saya cetak. Dan sebelum kita melihat teaser pada layar beberapa sintaks khusus yang memungkinkan kita untuk pengganti dalam nilai. Apa khusus simbol beberapa slide yang lalu? Jadi persen. Pada saat itu persen d untuk angka desimal. Itu tidak benar-benar tampaknya relevan di sini. Ternyata ada dunia simbol persen lainnya, yang persen, yang berdiri untuk tempat untuk string. Jadi sekarang, sangat sederhana, aku akan pergi make-halo 1, karena file ini disebut hello-1.c, dan tekan Enter. Dan aku kacau. Apa yang terjadi? Nah, di sinilah kita harus mulai menghargai bahwa kita berada di perintah ini lingkungan line, ini teks hanya lingkungan. Tidak ada mengklik ikon seperti folder sekarang. Dan pikirkan kembali beberapa saat yang lalu. Dalam apa folder aku bilang Aku menyimpan kode saya? Jadi folder Dropbox. Bisa disebut apa-apa. Tapi itu terjadi disebut Dropbox. Jadi saya entah bagaimana perlu klik dua kali pada bahwa Dropbox folder untuk mendapatkan ke dalamnya dan mendapatkan saya kode yang disebut halo-1.c. Bahkan, biarkan aku pergi ke depan dan meminimalkan jendela ini untuk sesaat. Sama seperti Windows dan Mac OS, ada folder di Linux. Ada folder dalam CS50 Appliance. Hanya saja sekarang kita membatasi diri untuk lingkungan teks ini. Tapi kalau aku double click pada Dropbox, melihat ada adalah file yang saya ingin mengkompilasi. Tapi aku butuh ini hitam dan putih jendela terminal, sehingga untuk berbicara. Tapi aku butuh, oleh karena itu, untuk bergerak ke dalam folder atau direktori. Jadi sedikit misterius, namun Anda akan terbiasa dengan ini juga. Dalam dunia Linux, yang lagi operasi Sistem kita menjalankan bagian dalam CS50 Appliance, ada perintah yang disebut CD. Yang berarti saya bisa melakukan CD, ruang, Dropbox. CD, direktori perubahan. Benar. Kembali pada hari ketika orang-orang menciptakan komputer dan operasi sistem seperti ini, mereka ingin ketik keystrokes mungkin paling sedikit. Jadi cara termudah untuk mengatakan mengubah direktori adalah CD. Jadi jika aku memukul CD, ruang Dropbox, melihat apa yang telah berubah di sini. Di dalam kurung alat jenis dari humoring saya dan mengingatkan saya keberadaan saya. Jadi folder terbuka adalah Dropbox. Jika saya sekarang ketik ls untuk daftar, sekali lagi ringkas, karena orang tidak mau ketik kembali pada hari l-i-s-t. Jadi mereka bukan membuat ls. Enter. Perhatikan saya melihat dua hal, halo-1.c, dan kemudian hal ini samar, sumber 1m. Itu hanya cara saya untuk mengatakan source code untuk minggu 1 Senin. Itu folder saya download dari Situs CS50 yang saya buat sebelumnya hari ini dan hanya memasukkannya ke dalam alat di muka. Tapi untuk saat ini satu-satunya hal yang kita pedulikan adalah pembuatan program ini. Jadi ketika saya mengetik make-halo 1, Enter. Sialan. Sesuatu yang salah. Jadi mari kita menggoda ini terpisah. Dan sayangnya ini adalah di mana hal-hal mendapatkan sedikit stres pada awalnya, setidaknya jika Anda sudah tidak pernah diprogram sebelumnya. My god. Aku menulis sebuah program dua baris dan Saya memiliki empat lini kesalahan. Jadi apa yang terjadi di sini. Pertama dan terpenting selalu gulir kembali dan menemukan pesan kesalahan pertama, karena seringkali kompiler hanya bingung dengan apa yang Anda dan saya lakukan. Compiler cukup bodoh. Mereka hanya akan melakukan apa yang Anda memberitahu mereka untuk melakukannya. Dan jika Anda membingungkan mereka, mereka hanya akan jenis muntah tangan mereka dan mungkin melemparkan pesan kesalahan yang lebih dari sebenarnya relevan. Jadi mari kita lihat yang pertama. Super samar pada awalnya. Tapi perhatikan, inilah nama file di mana saya kacau rupanya. Colon 5, usus 5 hanya berarti pada baris 5 pada karakter kelima. Jadi kolom kelima karakter, jika Anda mau, error. Penggunaan dideklarasikan string identifier. Apakah yang Anda maksud standar n? Tidak, aku berarti tali. Dan maka itu jenis copy dan paste apa yang saya ketik untuk benar-benar menarik saya memperhatikan di mana saya kacau. Jadi untuk beberapa alasan C, atau setidaknya compiler tidak memahami string kata. Dan itu karena kita membuat itu. Jadi string tidak ada di C. Apa CS50 tidak, selama beberapa minggu pertama hanya kelas, adalah kita memberikan beberapa pelatihan roda, sehingga untuk berbicara. Dan kami menempatkan ini roda pelatihan dalam file khusus yang disebut CS50.h. Jadi, ini adalah yang kedua dari dua berkas nama-nama yang tampaknya berakhir di titik h. Mari kita mundur. Printf adalah pernyataan atau fungsi yang tampaknya mencetak sesuatu ke layar. Tapi Anda tidak melihat saya menerapkan printf, benar. Seseorang tahun yang lalu dilaksanakan printf. Dalam file apa yang akan Anda taruhan dia atau dia menempatkan pelaksanaan untuk printf, kode untuk printf? Dalam file bernama standar I / O.h. Bahkan, itu mungkin di dua file, standar I / O.h, yang merupakan singkatan untuk header File, dan standar I / O.c, yang merupakan singkatan dari kode sumber C. Jadi dia beberapa tahun yang lalu menjatuhkan kode yang mereka tulis ke dalam file tersebut sehingga orang-orang seperti kita tahun kemudian bisa memasukkannya, sehingga untuk berbicara, dalam program kita sendiri. Dan memang, itulah yang tanda pound diikuti oleh kata termasuk tidak. Ini terlihat pada hard drive lokal, menemukan file bernama standar I / O.h, dan kemudian secara efektif eksemplar dan pasta di dalam file saya sendiri. Jadi sekarang program saya tahu cara mencetak ke layar. Jadi dengan logika, di mana adalah string yang didefinisikan? AUDIENCE: CS50.h. DAVID J. Malan: CS50.h. Dan memang, itulah yang kita, staf inti, telah melakukan. Kami telah menciptakan sebuah tipe data beberapa, sehingga untuk berbicara, seperti string, selain yang Anda dapatkan secara gratis, seperti int. Dan kita akan melihat orang lain seperti char untuk karakter dan beberapa lagi. Di dalam CS50.h ternyata adalah setidaknya beberapa menyebutkan string. Jadi sekarang biarkan aku pergi ke depan dan jalankan kembali membuat hello-1. Aku akan memperbesar lagi dan menyilangkan jari. Sekarang dengan telah membuat satu mengubah saya tetap banyak hal. Tapi sialan. Persen lebih dari argumen data. Apa yang saya lakukan salah kali ini? Jadi masih cukup samar. Tapi kesalahan ini pada line 7 dan karakter 21. Jadi mari kita lihat di sini. Ini sedikit halus. Tapi jika Anda berpikir tentang apa ide-ide dasar di sini adalah, mungkin kita bisa menggoda ini terpisah. Jadi printf adalah nama fungsi. Kurung, sejauh ini, adalah seperti apa yang kita masukkan sekitar hal-hal yang kita lewat sebagai masukan untuk fungsi. Baiklah, hanya konvensi manusia sewenang-wenang. Gunakan tanda kurung. Di dalam mereka kurung kami telah menempatkan tanda kutip ganda, dan kemudian string seperti "hello world." Tapi dalam contoh sebelumnya sangat sebentar apakah kita melihat dengan Scratch. Dan kami memiliki persen d, apa lagi berada di dalam mereka kurung bahwa saya memanggil secara lisan? Ya. AUDIENCE: Jadi apa yang Anda mengambil [Tak terdengar] dari dalam [Tak terdengar] apa ini [Tak terdengar]? DAVID J. Malan: Tepat. Jadi kami punya persen d. Tapi kemudian kami harus tutup kutipan, koma, counter. Benar. Kami ditentukan apa yang kita inginkan lakukan sebagai placeholder. Jadi apa yang akan saya lakukan di sini adalah koma, apa yang Anda ingin saya untuk menempatkan? AUDIENCE: S. DAVID J. Malan: S, karena dalam kasus ini adalah nama dari wadah penyimpanan. Ini adalah nama yang mangkuk kaca. Padahal sebelumnya itu kontra dalam Scratch contoh sederhana kita melihat. Jadi sekarang telah membuat dua perubahan, biarkan aku memperbesar dan mencoba sekali lagi untuk mengkompilasi program ini. Sekarang saya melihat bahwa garis samar. Tapi itu sebenarnya nama kompilator. Dentang adalah nama dari compiler. Membuat hanya menyelamatkan saya sakit kepala yang pernah mengetik bahwa perintah yang panjang gila. Jadi sekarang jika saya dot slash hello-1, Aku harus melihat "Halo, David." Cukup underwhelming, meskipun, kan? Kita bisa melakukan ini jauh lebih sederhana tanpa berbicara tentang variabel dan CS50.h dan semua itu. Jadi, mari kita membuat sebuah sedikit lebih menarik. Selain CS50.h, memiliki hal-hal seperti tali menyatakan, perpustakaan CS50 juga memiliki beberapa fungsi. Jadi sama seperti tahun lalu, seseorang menulis printf dan memasukkannya ke dalam standar I / O.h dan beberapa file lain. Kami, staf CS50, menulis fungsi disebut getchar, GetDouble, getFloat, GetInt, GetLongLong, GetString, dan kami menempatkan mereka dalam sebuah file disebut CS50.h dan CS50.c. Dan kami menempatkan mereka di dalam dari CS50 Appliance. Dan orang-orang juga bisa men-download secara online jika mereka ingin menempatkan mereka pada mereka komputer sendiri juga. Yang mengatakan bahwa kita telah menciptakan fungsi yang mendapatkan masukan dari pengguna. Aku tidak tahu apa semua dari tipe data ini adalah. GetInt adalah jenis sederhana, seperti mendapatkan integer entah bagaimana dari pengguna. Dan GetString mungkin seperti mendapatkan sebuah kata atau kalimat dari pengguna. Jadi mari kita fokus pada hal itu. Dan aku akan kembali ke alat dan aku akan pergi ke depan dan menyimpan file ini sebagai, mari kita sebut itu hello-2.c sebagai versi kedua. Dan mari kita membuat beberapa perubahan. Kali ini bukan hard coding David, yang membuat sangat konsisten tetapi program underwhelming, bagaimana jika saya bukan melakukan GetString? Sekarang perhatikan GetString memiliki kurung buka, kurung tertutup, karena tidak perlu masukan apapun. Itu hanya akan pergi mendapatkan string dari pengguna. Dan sekarang kata pada sintaks lainnya. Koma hanya mengakhiri baris kode. Anda tidak membutuhkan mereka di mana-mana. Tapi itu hanya berarti aku dilakukan dengan baris kode. Biarkan aku pindah ke lain Pernyataan atau fungsi. String menyatakan variabel. String adalah seperti mengatakan memberi saya mangkuk, silakan. Dan biarkan aku menempatkan string di dalamnya. Dan sekarang tanda sama. Apa tanda sama pada dasarnya setara dengan? AUDIENCE: Tetapkan. DAVID J. Malan: Ya, menetapkan nilai. Jadi jika saya, misalnya, panggilan fungsi GetString ini, dan kita akan melihat di saat yang akan meminta pengguna untuk string. Ini seperti membiarkan saya kemudian menulis D-a-v-i-d pada selembar kertas. Dan ketika saya mengatakan tali s sama GetString, sama tidak benar-benar berarti sama dalam pemrograman C. Ini berarti menetapkan dari kanan sisi ke sisi kiri. Jadi saya sudah mendapatkan string. Dan tanda sama berarti meletakkannya dalam penyimpanan kontainer disebut s. Dan Kemudian melewati ini off untuk printf untuk benar-benar melakukan hal tersebut. Jadi hasil akhirnya kemudian akan terlihat sedikit berbeda. Mari kita lakukan membuat hello-2. Entah bisa bekerja. Kau mengikuti dari awal. Membuat hello-2 bekerja. Dot slash hello-2, Enter. Saya tampaknya memiliki terbatas lingkaran atau sesuatu. Tidak ada yang terjadi. Mengapa? AUDIENCE: Ini membuat loop tak terbatas. DAVID J. Malan: Ini adalah infinite loop. Ini semacam menunggu saya untuk benar-benar memberikan dengan beberapa masukan. Jadi biarkan aku pergi ke depan dan ketik di David, dan tekan Enter. Dan sekarang ia mengatakan "Halo, David." Jika saya jalankan lagi. Mari kita ketik Rob, "Halo, Rob." Sekarang ini adalah yang terburuk user interface pernah. Pengguna ini rupanya seharusnya tahu apa yang harus dilakukan. Tapi tak peduli. Dengan menggunakan gedung yang sama blok seperti di Scratch, kita dapat memecahkan masalah itu dan mengatakan sesuatu seperti nama Anda, mohon, usus besar, ruang, ditutup kutipan, dekat kurung, koma. Jadi banyak lagi kekonyolan dengan sintaks. Tapi perhatikan aku baru saja menambahkan potongan puzzle di atas satu ini dan di atas satu ini. Jadi sekarang jika saya jalankan ini, hello-2, Enter. Tunggu dulu. Apa yang salah? Ini tidak berperilaku secara berbeda. Ya. AUDIENCE: Anda tidak menjalankan membuat lagi. DAVID J. Malan: Aku tidak jalankan make lagi, kan. Jadi saya telah mengubah kode sumber. Tapi sekali lagi, ada aliran itu. Source code melalui compiler memberikan Anda kode objek baru, atau 0 dan 1. Jadi aku harus benar-benar make jalankan kembali hello-2 Enter. OK, sesuatu tampaknya telah terjadi. Dot slash hello-2. Nama Anda silakan. Dan harus jelas sekarang, mengapa kursor pada baris yang sama? Tepat. Saya tidak menempatkan backslash n di sini dalam kode saya. Jadi sekarang aku bisa menulis sesuatu seperti Daven, Enter. Aku bisa lari lagi dan ketik sesuatu seperti Gabe, Enter, dan kami mendapatkan program yang berbeda lagi dan lagi dan lagi. Sekarang akhirnya kita akan membutuhkan menggunakan kemampuan yang berbeda. Kita perlu memperkenalkan akhirnya beberapa kondisi untuk melakukan hal-hal kondisional. Mungkin loop sehingga kami dapat melakukan hal lagi dan lagi. Mungkin akan lebih baik jika kita bisa menerapkan fungsi kita sendiri, seperti kita bisa menerapkan kita sendiri printf atau versi kita sendiri GetString dan GetFlow, karena pada akhirnya bahkan menggunakan ini lingkungan baris perintah bisa kita lakukan bahkan yang paling visual menarik hal. Memang dalam kesimpulan biarkan aku melakukan ini. Aku akan pergi ke depan dan menutup jendela ini dan buka icon ini di sini, yang hanya lebih besar versi yang tertanam jendela terminal. Jadi Gedit tidak hanya tempat untuk kode saya, tetapi juga dibangun di jendela terminal, jendela hitam dan putih di mana saya dapat menjalankan perintah. Aku hanya terjadi untuk membuka versi yang lebih besar dari ini. Dan sekarang aku akan pergi ke folder yang saya sudah sudah dimasukkan ke dalam muka di website program ini. Dan aku akan pergi ke depan dan membuka file bernama thadgavin.c, yang ditulis oleh orang lain. Dan jika kita lihat ini, ini bukan jenis kode kita akan menulis sejak tujuan kode ini adalah menulis tercantik mencari kode yang ia bisa, terlepas dari apakah atau tidak manusia lain yang pernah bisa memahami kode ini. Memang, setiap tahun ada apa disebut C kontes dikaburkan, yang adalah untuk Geeks nyata yang menulis kode yang tidak ada orang lain dapat membaca, tapi yang melakukan sesuatu baik benar-benar sederhana atau benar-benar menakjubkan. Dan kami pikir kami akan menyimpulkan dengan tampilan ini pada sesuatu yang sangat menakjubkan Anda mungkin telah melihat sekali sebelumnya. Tapi kita akan berakhir pada ini catatan, dot slash, thadgavin. Ini kemudian adalah apa yang menanti. Itu saja untuk CS50. Kita akan melihat Anda pada hari Rabu. [MUSIC PLAYING]