[VIDEO PLAYBACK] Kemenangan -A dari matematika dan keterampilan mekanik adalah ini otomatis baru yang besar kalkulator di Harvard University. Masalah yang rumit dalam matematika dimasukkan melalui mesin dalam bentuk kode pada pita secara akurat diselesaikan dalam fraksi menit dari waktu yang dibutuhkan untuk perhitungan manusia. Dirancang untuk mempercepat segala bentuk penelitian matematika dan ilmiah, otak mekanik raksasa akan bekerja untuk Angkatan Laut Amerika Serikat sampai akhir perang. [END PLAYBACK] DAVID J. Malan: ini, adalah CS50. Masa lalu adalah ajaib tempat, tapi jika Anda sudah pernah bertanya-tanya apa perangkat yang di Harvard Science Center, memang bagian dari Harvard Mark I, dan itu dipajang di sana sekarang selama bertahun-tahun terakhir. Dan apa yang Anda akan melihat tertanam dalam masalah set satu adalah melihat di balik layar apa perangkat yang melakukan, dan melakukan, dari Profesor Harry Lewis, yang di komputer departemen ilmu di sini. Jadi lebih pada bahwa dalam hanya sedikit. Tapi hari ini kita mulai transisi dari minggu lalu ini, dan kami akan membawa menyebutkan dari satu foto di sini itu sebenarnya cukup terkenal. Apakah ada yang tahu apa ini di sini adalah pada layar? Setidaknya menurut mitos. Ya. AUDIENCE: Virus pertama. DAVID J. Malan: Jadi itu seharusnya bug yang sebenarnya pertama di komputer. Sekarang dalam kenyataannya bug kata, untuk kesalahan dalam program, telah bersama kami untuk beberapa waktu di dunia fisik, dan ini adalah salah satu yang pertama kali didokumentasikan di mana seseorang benar-benar dipetik ngengat besar dari Tandai Komputer II, memasukkannya ke dalam pengikat, dan kemudian merekamnya sebagai bug diketahui pertama untuk benar-benar telah ditemukan secara fisik. Jadi dengan demikian masuk yang menjadi pengetahuan saat ini. Semuanya dari lalu Minggu tersedia secara online. Dalam sumber tertentu yang Anda mungkin belum tentu melihat, terutama jika datang ke sini secara pribadi. Jadi salah satu rekan mengajar setiap tahun membuat satu set kanonik catatan, sehingga Anda tidak perlu terus kepala Anda, mencoba untuk menuliskan apa yang paling yang mungkin terjadi di sini di kelas. Jadi menyadari bahwa mereka disebut [? Scribd?] Catatan sedang online, tentu slide dan source code yang kita gunakan di kelas. Kami membuat transkrip teks lengkap tersedia juga. Jadi jika Anda samar-samar ingat beberapa Istilah, dan ingin melihat itu sedikit lebih mudah, menyadari bahwa semua dari yang dicari secara online. Serta penelusuran juga. Memang, hari ini kita mulai melihat bahasa pemrograman tingkat rendah, segera kita ketahui C, dan itu sangat mudah untuk semacam tersesat setelah hanya beberapa waktu saat, dan kemudian semacam heran bagaimana kita benar-benar harus lagi Misalnya kompleks dari yang paling sederhana. Dan begitu menyadari kita akan cherry memilih selama kelas beberapa contoh perwakilan, tapi menyadari bahwa begitu banyak juga tersedia secara online sehingga Anda dapat bekerja melalui itu pada kecepatan Anda sendiri, Namun Anda paling nyaman. Tapi kami tinggalkan dengan program yang hanya ini. Jadi saya klik bendera hijau, dan apa program ini lakukan? Mengatakan, halo, dunia. Itu membuat kucing mengatakan halo di dunia kecilnya di sisi kiri atas dari antarmuka pengguna Scratch ini. Tapi kami mulai memperkenalkan beberapa terminologi pekan lalu. Dan, hal seperti ini kita disebut apa? Apa yang mungkin menjadi istilah umum untuk ini? Ya. Sebuah metode atau pernyataan. Tentu, ini merupakan tindakan. Melakukan hal ini. Dan belum ada bentuk lainnya dengan awal, selain yang disebut ini Pernyataan, mereka juga hal-hal seperti ini, yang kami sebut apa? Ya. Jadi lingkaran. Dan dalam hal ini, hal ini mengulangi, jelas, 10 kali. Ada selamanya blok. Ada beberapa orang lain. Dan hari ini kita akan melihat bagaimana menerjemahkan ini untuk dunia yang lebih modern, jika Anda mau, meskipun itu akan muncul pada pandangan pertama jauh lebih misterius. Tapi mereka memang loop. Dan kemudian kita memiliki hal-hal seperti ini, yang memiliki bentuk ini, dan pada dasarnya mengajukan pertanyaan. Dan kita disebut ini sebagai apa? AUDIENCE: ekspresi Boolean. DAVID J. Malan: Ya. Ekspresi Boolean. Sesuatu yang bisa benar atau palsu, ya atau tidak, satu atau nol, Namun Anda ingin melihat dunia. Tapi kami disebut Boolean mereka ekspresi, dan kami plug mereka dalam kondisi, atau cabang. Dan di dunia Scratch, semuanya baik interlock segi bentuknya, apakah masuk akal logis untuk melakukannya, tetapi Anda tidak harus berhenti di hanya melakukan satu hal kondisional, Anda dapat memiliki sebuah pepatah garpu di jalan dan melakukan baik ini atau itu jika kondisi ini benar atau tidak. Dan kemudian, seperti yang Anda lihat, jika Anda belum melakukannya, Anda dapat meratakan sarang blok ini. Jadi Scratch tumbuh untuk mengisi bentuk bahwa Anda mungkin ingin memasukkan ke dalamnya, sehingga Anda dapat benar-benar mengungkapkan paling logika yang mungkin ingin Anda lakukan. Sekarang beberapa kata dari pengumuman untuk kedua di sini dan New Haven. Jadi sectioning dimulai hari ini. URL untuk ini adalah di lapangan ini website, untuk mereka yang tidak terbiasa. Bagian akan menjadi kesempatan untuk bersama-sama di lingkungan yang jauh lebih intim dari [? Sanders?] Memungkinkan, dengan 10 sampai 20 teman sekelas dengan mengajar sesama di trek yang berbeda, dan langkah yang berbeda, jika Anda memilih demikian. Memang menawarkan kursus bagian yang berbeda bagi mereka yang kurang nyaman, lebih nyaman, dan di suatu tempat di antara, dan peran praktis di sini, adalah tidak ada definisi formal, tetapi jika Anda kurang nyaman, Anda jenis tahu itu. Anda sedikit pemberani tentang Ide melangkah kaki, mungkin, kembali di dalam kelas, atau menampilkan hingga di antara bagian. Jika Anda sudah pemrograman sejak Anda berumur enam tahun, lebih nyaman, mungkin untuk Anda. Dan jika itu jenis melemparkan-up, itulah yang di antara dimaksudkan untuk menjadi. Sekarang, sementara itu, untuk kelas ukuran ini, itu membawa kita beberapa waktu untuk bagian semua orang, jadi kami telah disebut, bagian super, datang ini akhir pekan dan awal minggu depan, jadi kita lihat di website kursus ini bagi mereka yang tentu saja lebar, dan juga difilmkan bagi mereka yang tidak bisa membuat mereka. Dan bagian sendiri akan mulai di minggu ketiga indeks CS50 nol. Masalah mengatur 0 sudah di website kursus ini. Dan menyadari bahwa Anda memiliki sembilan hari akhir semester ini. Jadi ini merupakan upgrade dari terakhir tahun, ketika kami memiliki lima hari terlambat. Jadi jika Anda bertanya-tanya, kami memiliki sembilan masalah set. Anda memiliki sembilan hari terlambat, yang masing-masing Anda hanya bisa menghabiskan satu per minggu pada. Yang secara efektif membuat semua masalah set Jumat karena, tetapi tujuannya adalah untuk menempatkan sedikit sedikit tekanan psikologis pada Anda untuk mencoba untuk mendapatkan hal di Kamis karena ketika Anda akan segera menemukan, untuk lebih baik atau buruk, sebagian besar segala sesuatu di dunia perangkat lunak berakhir mengambil lebih lama dari yang Anda mengantisipasi. Jadi pertimbangkan itu semacam sebuah kesempatan untuk membantu diri untuk menargetkan Kamis, tetapi mengambil kenyamanan dalam hal itu, ya, semuanya karena hari Jumat. Dan jika Anda mengirimkan mereka pada Kamis, itu indah. Tidak ada poin bonus atau tambahan kredit untuk memenuhi tenggat waktu itu. Ini dimaksudkan untuk menjadi penopang saja. Dan jam kantor, baik di sini dan di New Haven, secara pribadi, jika Anda ingin bertemu dengan salah satu program kami mengajar rekan dan CA untuk bantuan. Baiklah. Jadi sekarang, mari kita membuat ini lebih nyata. Dan untuk sesaat itu akan mulai untuk mendapatkan sedikit lebih misterius, tapi sangat cepat pada hari Jumat dan minggu depan kita akan dapat melakukan jauh lebih banyak dari kita bisa sejauh ini di Scratch. Jadi kami memperkenalkan kode terakhir Minggu, meskipun pictoral. Itu potongan puzzle. Dan kami formal bahwa itu adalah sesuatu yang disebut kode sumber, tapi akan itu terlihat seperti? Nah, itu tampak sedikit sesuatu seperti ini. Dan, pada kenyataannya, hanya untuk jenis menggoda di mana kita bisa pergi dengan ini. Aku akan pergi ke depan dan membuka jendela di sini, dan aku hanya akan memilih New File. Dan aku akan menyimpan file ini sebagai sesuatu seperti halo dot c. Lebih pada pilihan kata hanya dalam beberapa saat. Dan ini adalah bagaimana seseorang mungkin pergi tentang menulis sebuah program. Termasuk standar I / O dot h, int main batal, dan kemudian buka penjepit keriting, dekat penjepit keriting, printf halo dunia koma, backslash n, titik koma, Simpan, dilakukan. OKE. Aku sudah menulis pertama saya Program, tapi itu akan menjadi sangat underwhelmed karena ketika saya benar-benar menjalankan program ini, tentu saja, dengan menulis pertama membuat halo, dan kemudian dot slash halo, dan kami akan melalui ini lebih detail suatu saat, itu semua hal ini. Tidak pop terbuka jendela apapun. Ia tidak melakukan apa-apa sangat mewah. Semua hal ini adalah apa yang saya diberitahu itu untuk lakukan, tapi bagaimana kita bisa itu? Dan bagaimana kita membangun itu? Nah, mari kita memperkenalkan beberapa konsep yang berbeda di sini. Jadi satu, kita akan memulai menggunakan program yang disebut kompilator. Sebuah compiler ada untuk Mac OS, Windows, Linux, sejumlah sistem operasi, dan kami akan segera memperkenalkan Anda ke lingkungan yang kita akan gunakan, tapi kompilator hanya umum istilah untuk software yang mengambil kode sumber dan menghasilkan kode objek dari itu. Dengan kata lain, jika Anda memiliki sebagai masukan sumber Anda kode, seperti apa yang baru saja saya mengetik, akhirnya menghasilkan kode obyek. Dan kode objek benar-benar hanya cara mewah untuk mengatakan itu output nol dan satu. Dengan kata lain, sumber kode, meskipun itu akan terlihat misterius sedikit, dan sedikit kurang ramah dari Scratch pada pandangan pertama, itu setidaknya sesuatu bahwa kita manusia dapat memahami. Jenis terlihat dan terdengar seperti Inggris meskipun itu sangat ringkas. Sedangkan pemrograman nol dan seseorang, seperti para pendahulu kita harus lakukan, beberapa tahun yang lalu, bukan terutama menyenangkan tantangan. Namun, ini adalah apa yang komputer masih mengerti. Jadi compiler mendapat kita dari kode sumber untuk objek kode. Ini seperti membuka file dengan compiler, dan ketika Anda menyimpannya, Anda mendapatkan orang-nol dan satu. Jadi kita akan melihat bagaimana melakukan yang hanya dalam beberapa saat. Tapi mari kita sekarang mencoba untuk memberikan menjembatani antara minggu lalu dan ini, sehingga bahkan ketika kita terpaku pada hal-hal seperti kawat gigi keriting, dan titik koma, dan tanda kurung, dan semua ini secara intelektual menarik aspek pemrograman, yang sangat dimengerti perjalanan orang sampai awal, menyadari bahwa semua ide hari ini, adalah sama seperti terakhir. Jadi terakhir, kita melihat contoh ini di sini, Program Hello World. Nah, mulai hari ini, jika kita ingin untuk melaksanakan program yang sama, itu akan terlihat sedikit sesuatu seperti ini. Dan kami akan menjelaskan sebelum lama int apa, dan utama, dan kosong, dan semua itu adalah, tapi setidaknya saya lihat di sini sudah akrab Hello World. Sementara itu, hal-hal seperti fungsi, menyapa, yang sangat sederhana akan menjadi pernyataan yang sangat sederhana seperti ini. Printf halo dunia, dengan beberapa mengutip, dengan garis miring terbalik, dengan titik koma, tapi lebih pada untuk datang. Loops, sementara itu, ini lingkaran itu, tentu saja, menyapa dunia selamanya, dan yang satu ini akan terlihat sedikit aneh daripada di yang terakhir, tetapi jika aku mengatakan sesuatu seperti, sementara benar, saya kemudian dapat mencetak Hello dunia lagi dan lagi dan lagi dan lagi. Dan kemudian Anda bisa jenis dari mulai menyimpulkan di sini, konvensi ini menggunakan kurung kurawal adalah jenis seperti merangkul baris indentasi kode di sana. Baris printf kode seperti kuning potongan puzzle di atas. Jadi kita tidak akan mengatakan selamanya, kita akan mengatakan sementara benar, tapi kami akan melihat mengapa itu hanya sedikit. Sementara itu, jika kita memiliki satu lingkaran seperti ini, di mana Anda mengulangi sesuatu yang terbatas nomor kali, yang satu ini juga sangat akan mengambil sedikit membiasakan , tapi itu akan mengatakan untuk int i mendapat nol, saya kurang dari 10, i ++, dan kemudian printf lagi. Tapi ada akan menjadi pola. Dan bagi Anda yang akrab dengan AP Ilmu Komputer, atau Java, atau sejumlah bahasa lain, hampir semua konstruksi ini sejauh harus melihat sebagian besar akrab. Jadi variabel. Jadi, inilah Scratch kutipan sederhana yang menetapkan variabel yang disebut counter ke nol, dan kemudian selamanya mengatakan meja, dan maka perubahan counter per satu. Jadi dimulai dengan nol, dan kemudian satu, dua, tiga. Nah, bagaimana kita bisa memperkenalkan bahwa di bahasa ini baru sedikit sama? Int kontra sama nol, sementara benar, yang adalah bahwa ide yang sama dari sebelumnya melakukan sesuatu selamanya, dan aku hanya akan printf. Dan sekarang itu semakin sedikit aneh, persen saya, tetapi lebih pada untuk datang, tetapi gagasan-gagasan ini persis sama. Kami hanya sekarang harus mematuhi sintaks bahwa komputer adalah akan menuntut kita. Ekspresi Boolean, sesuatu seperti sx kurang dari y, atau x kurang dari y, dan y kurang dari z. Ini akan terlihat sedikit sesuatu seperti ini, dengan kurung hanya seperti dalam matematika untuk mengukur baik untuk hanya memastikan bahwa urutan operasi adalah sebagai kami berniat. Dan sekarang, kondisi. Jadi jika x kurang dari y, mengatakan x kurang dari y, lain jika x lebih besar dari y, mengatakan x lebih besar dari y, jika tidak logis, x harus sama dengan y. Jadi, Anda mungkin menerapkan sesuatu seperti ini di Scratch, atau Anda mungkin menerapkan dalam sintaks ini. Dan lagi, kurung kurawal adalah jenis memberikan kita bentuk yang sama seperti teka-teki potongan, namun sintaks, sekarang, mungkin mulai mengikuti beberapa pola. Jadi, apa ini memberi kita di sini? Jadi kita kembali kemudian di program utama kami. Mari kita sebenarnya, sekarang, melakukan sesuatu dengan itu. Jadi dalam hal ini pertama baris kami lihat termasuk tajam, standar I / O, titik jam, dan kemudian beberapa sudut yang aneh kurung di bawah itu. int main batal, dan kemudian printf halo dunia. Jadi hanya mengambil langkah. Seseorang yang tidak pernah diprogram sebelumnya, setidaknya menjelaskan salah satu dari garis-garis ini. Menggunakan mungkin beberapa jargon pekan lalu. Apa printf, misalnya? Ya. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Ini fungsi, atau pernyataan, dari terminologi pekan lalu. Dan itu tindakan yang melakukan sesuatu. Sekarang fungsi ini, atau pernyataan ini, tidak tampak untuk mengambil beberapa jenis input? Dan dalam arti apa melakukannya tampaknya mengambil masukan, jika demikian? Masukan, apa yang saya maksud dengan itu? Ya. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Jadi Gores sebuah potongan puzzle beberapa di mana Anda dapat parametrize itu. Anda bisa mengatakan ulangi memblokir berapa kali untuk mengulang, jadi itu masukan dari macam, dan seperti Scratch memiliki placeholder putih kecil untuk nomor yang akan ketik, jadi kita gunakan dalam hal ini kurung dunia teks untuk memberikan yang berbentuk lingkaran di mana kita bisa pasang masukan kami. Setelah semua, puluhan tahun yang lalu ketika bahasa ini, disebut C, diciptakan tidak ada diantisipasi itu salah satu dari kita, ini beberapa tahun kemudian, kami akan ingin fungsi yang menyapa. Benar? Ini akan sangat baik jika ada potongan puzzle, atau kata-kata kunci, yang disebut halo, yang benar-benar hanya menyapa. Tapi kita tidak perlu itu. Kita dapat memiliki sesuatu yang jauh lebih rendah tingkat, seperti cetak generik perintah, yang mengambil input, dan cetak apapun yang kita inginkan. Jadi perhatikan pola sekarang yang akan mulai muncul. Terbuka paren, paren dekat adalah tampaknya merangkul input, dan kemudian saya melihat ganda mengutip pada kedua ujungnya. Masih ada backslash aneh n, tapi mudah-mudahan sekarang Anda dapat mulai untuk memvisualisasikan setidaknya itu printf adalah mengambil dalam beberapa bentuk masukan. Tidak sebagai user friendly Scratch, tapi itu hanya seperti memiliki terpasang di beberapa nilai sana. Baiklah, sekarang mari kita sebenarnya melakukan sesuatu dengan ini. Jadi beberapa dari Anda mungkin tahu dari memiliki berbelanja kelas sebelumnya, mengobrol dengan teman-teman, yang selama bertahun-tahun kami menggunakan sesuatu yang disebut alat CS50. Ini adalah istilah yang menggambarkan teknologi disebut mesin virtual, yang adalah software yang Anda pendahulu akan men-download off website saja secara gratis. Mereka juga akan men-download sepotong gratis dari perangkat lunak yang disebut hypervisor, sesuatu yang disebut seperti VMware, atau VirtualBox, atau sejumlah alat-alat lain, dan mereka Mac atau PC atau komputer apa pun yang mereka punya tahun lalu dan di tahun terakhir, mereka akan menggandakan klik ikon untuk menjalankan software ini disebut hypervisor. Dan kemudian di dalam program yang mereka akan membuka alat CS50. Dan efeknya adalah bahwa apakah pendahulu Anda berlari Mac OS atau Windows, ia kemudian kemudian memiliki jendela baru pada mereka Layar menjalankan lingkungan CS50 ini. Jadi mesin virtual memungkinkan Anda menjalankan satu sistem operasi dalam lain, dan itulah yang kami lakukan. Sepanjang sebagian besar kita saja menggunakan sistem operasi yang disebut Linux, khususnya Ubuntu Linux, dan ini adalah cara yang sangat bagus di tahun terakhir memastikan bahwa setiap orang dalam kursus hanya memiliki lingkungan yang sama. Dan Anda dapat menggunakan segala jenis komputer yang Anda benar-benar ingin. Di antara kerugian, meskipun, yang itu seperti dua gigabyte untuk men-download hal ini. Ini tidak selalu bekerja dengan baik pada Super orang-orang yang komputer yang mungkin hanya memiliki manggung atau lebih RAM, atau tidak terlalu banyak gigahertz kecepatan CPU, dan tahun ini, untuk ini dan alasan lainnya, harus kita telah transisi untuk lingkungan ini. Yang disebut CS50 IDE, yang merupakan didasarkan pada perangkat lunak open source, dan platform yang didukung bahwa sebuah perusahaan bernama Cloud9 mendukung di Eropa, yang memungkinkan kita untuk memiliki dasarnya bahwa lingkungan yang sama persis seperti di tahun terakhir, tetapi dalam apa yang disebut awan. Jadi apa yang awan? Anda mungkin pernah diklik icon pada Mac atau PC. Apa awan? Ya? Sebuah sedikit lebih keras. Ya. Ini hanya sekelompok komputer tempat lain yang menyimpan data dan menjalankan software dan sejenisnya. Sehingga benar-benar hanya untuk kata de jure menggambarkan [? disewakan?] komputer yang tinggal di tempat lain. Anda, diri sendiri, tidak selalu memiliki. Jadi ketika data Anda, atau Anda program, berada di awan, itu hanya berarti itu pada seseorang komputer lain di tempat lain, dan tidak, kemungkinan besar, pada Anda laptop fisik atau desktop. Dan itulah yang CS50 IDE sekarang adalah. Selanjutnya Anda akan pergi ke tertentu URL yang akan memperkenalkan Anda untuk, dalam masalah set 1, kemudian ini Minggu, yang akan kemudian, setelah login, memberikan lingkungan ini. Dan banyak Scratch seperti memiliki beberapa panel yang berbeda yang terlibat, begitu pula IDE CS50 memiliki hal itu. Di atas sisi kiri di sini, kau akan melihat file browser yang akrab. Jadi salah satu file yang Anda dimasukkan ke dalam lingkungan ini hanya akan terdaftar di sana. File dan folder. Di atas sini, Anda akan melihat tempat di mana Anda benar-benar dapat menulis kode Anda. Awalnya di C, kemudian di istilah dalam PHP dan JavaScript, dan, mungkin untuk akhir proyek, Ruby atau Java atau Python atau sejumlah bahasa yang didukung dalam lingkungan ini. Ini sama sekali tidak terikat untuk CS50 khusus. Dan kemudian di pojok bawah sini, terutama bagi mereka yang lebih nyaman, Anda memiliki sesuatu disebut jendela terminal. Dan jendela terminal ini memungkinkan Anda untuk menjalankan perintah apapun yang Anda inginkan dalam lingkungan awan ini. Hal ini memungkinkan Anda untuk menginstal software tambahan yang Anda inginkan karena Anda telah disebut akar, atau administrator hak. Jadi dengan kata lain, meskipun ini akhirnya host di awan, dan meskipun kita memiliki disederhanakan itu sampai batas tertentu secara default, secara harfiah memperkenalkan, Dan berkat Armendariz, dan Dino, dan Dan Bradley tim CS50 selama bertahun- melewati banyak bulan, kurang nyaman Modus yang menyembunyikan banyak gangguan awalnya membingungkan. Semuanya ada ada untuk merupakan sebuah sistem komputer yang khas Anda mungkin menggunakan di dunia nyata. Jadi, apa ini semua berarti, dan apa yang bisa kita benar-benar melakukannya dengan itu? Mari benar-benar mengambil mengintip di program. Jadi aku akan membuka lingkungan yang sebenarnya di sini, yang hanya Chrome kami browser, yang bisa menjadi Firefox, bisa Internet Explorer, atau browser lain juga. Ini penuh disaring sini untuk saat ini. Dan saya ingin benar-benar menggoda selain apa program ini adalah. Jadi mari kita lihat, dengan zoom in up Atas, apa yang saya lakukan, dan bagaimana saya sampai di sini. Jadi, inilah yang sebenarnya baris kode yang sama. Jadi ini adalah pernyataan, seperti yang Anda sebutkan sebelumnya. Fungsi yang mengatakan halo. Kurung kurawal, pada line empat dan garis enam, mungkin jenis amplop garis yang menghubungkannya dengan esensi program saya. Jadi memang, kata kunci utama ini, itu terserah ada di saluran tiga, Anda bisa memikirkan bahwa sebagai setara bahwa ketika bendera hijau diklik, memblokir di Scratch. Jadi itu yang kita miliki di sini, adalah ketika bendera hijau diklik, cetak, atau mengatakan, Halo Dunia. Tapi mari kita menebak, sekarang, apa pertama, garis yang lebih misterius ini, adalah. Tajam termasuk, terbuka miring braket, standar I / O dot jam, menutup bracket siku. Apa yang bahwa mungkin melakukan, terutama jika Anda telah diprogram sebelum dalam beberapa bahasa lain. Ya? AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Tepat. Jadi ini adalah memberikan Anda akses ke perpustakaan, sehingga untuk berbicara, fungsi. Dan perpustakaan fungsi adalah fungsi yang orang lain menulis, baik baru-baru ini atau lama, sehingga Anda tidak perlu menciptakan roda. Misalnya, kita tidak harus tahu, pada tahun 2015, bagaimana menulis kode yang menempatkan karakter di layar saya. Orang lain telah menemukan bahwa dengan fungsi printf sehingga saya dapat menyusun abstrak jauh dari itu, atau lapisan di atas nya kode, dan sekarang hanya mengambil saja bahwa program apapun saya menulis dapat mencetak sesuatu ke layar. Jadi baris pertama ini ada pada langkah satu termasuk yang disebut file header untuk perpustakaan standar. Jadi lihat, bahasa yang kita sekarang bekerja memiliki perpustakaan standar dengan banyak fungsi. Printf adalah salah satu dari mereka, dan bahwa baris pertama kode berarti memberikan akses ke fungsi-fungsi, sehingga saya tidak perlu menciptakan roda itu. Sekarang mari kita pergi ke jendela bawah dan melakukan apa yang saya lakukan sebelumnya. Sesaat lalu, ketika saya masih mendesing melalui kode, mengetik itu untuk pertama kalinya, Saya sangat cepat mengetik, membuat halo. Apa itu semua tentang akan Anda menebak? Apa yang saya lakukan? Ya? Lupakan. Tidak apa-apa. Ya. AUDIENCE: Kompilasi itu. DAVID J. Malan: Ya. Itu hanya mengkompilasinya. Benar? Bahkan jika ini benar-benar asing kepada Anda, itu cukup bahasa Inggris seperti. Hal ini jelas tidak nol dan orang-orang, jadi aku masih perlu menjalankannya melalui yang disebut Program, compiler, yang akan menganggapnya sebagai masukan dan menghasilkan output. Dan setidaknya, untuk saat ini, di lingkungan Linux ini, tapi ini tidak prasyarat, ini hanya di mana kita akan mulai, Anda biasanya berinteraksi dengan sistem komputer seperti ini oleh baris perintah disebut. Jadi dengan berkedip sebuah cepat dan keyboard, dan tidak begitu banyak mouse Anda, dan tidak begitu banyak jendela dan ikon dan menu, bukan semuanya tekstual. Dan meskipun ini terasa, pada awalnya Sekilas, mungkin, seperti langkah mundur, itu sebenarnya jauh lebih cara yang ampuh dan ekspresif mengendalikan komputer terutama karena Anda, diri sendiri, menjadi lebih nyaman dari kurang. Ini akan memungkinkan Anda untuk melakukan banyak lebih banyak hal daripada hanya apa Microsoft atau Apple memungkinkan Anda untuk melakukan dengan sistem operasi grafis mereka. Jadi ketika saya tekan Enter, sekarang, tidak ada yang terjadi saat ini karena rupanya Program halo up to date. Dan apa perintah Aku berlari setelah itu? Dot slash halo, halo dan dunia. Sekarang mari kita mengambil langkah kembali untuk sesaat. Ternyata yang membuat halo hanya Cara sederhana dari kompilasi program. Mari kita memperkenalkan salah satu bagian dari jargon, tapi kemudian pindah dari itu, karena itu tidak semua yang menarik untuk tujuan hari ini. Compiler kita akan mulai menggunakan disebut dentang, untuk bahasa C. Dan ini adalah sebuah program yang dijalankan hanya seperti yang kita lakukan pada baris perintah di sana. Dan jadi jika saya ingin mengkompilasi sebuah program yang saya telah ditulis dalam sebuah file yang bernama halo dot c, saya benar-benar cukup ketik dentang halo c masukkan. Lucunya, untuk alasan historis, jika saya tidak menentukan nama program yang ingin saya output, jika saya tidak melakukan menentukan nama file bagi mereka nol dan orang-orang, yang sangat aneh tahun konvensi diadopsi lalu mana rasanya semacam jawaban yang baik pada saat itu, baik mari kita sewenang-wenang memanggil Program pertama yang kita mengkompilasi sebuah titik keluar. Sebuah datang pertama dalam alfabet. Keluar, itu output. Jadi kita akan memanggil program secara default titik keluar. Dan itu bagus karena jika saya ingin menjalankan program dalam teks ini berdasarkan lingkungan, saya hanya ketik dot slash titik keluar masuk. Dan itu akan berjalan persis seperti sebelumnya. Jadi mari kita lihat yang sangat cepat. Jadi jika saya kembali ke saya kode sumber di CS50 IDE, dan saya bukan melakukan ini, dentang halo cot c masuk, pemberitahuan tidak ada tampaknya terjadi, tapi hampir selalu di lingkungan Linux ini, ketika ada yang buruk tampaknya terjadi, bahwa berarti sesuatu yang baik benar-benar terjadi. Jika Anda tidak melihat kesalahan pesan, semua mungkin baik. Dan memang, jika sekarang saya lakukan dot slash dot keluar masuk, saya sudah menjalankan program yang sama saya. Saya masih memiliki program halo dari sebelumnya karena memang, itu akan menjadi jauh lebih bagus hanya ketik membuat bukannya mengingat mantra ini dari perintah, tetapi mari kita lihat bagaimana kita mungkin memperbaiki ini, tetap. Jadi, ini adalah perintah untuk mengkompilasi kode. Ini adalah perintah untuk menjalankan kode dikompilasi sesudahnya. Bagaimana saya bisa menentukan nama file? Nah mari kita memperkenalkan satu lagi bagian dari jargon. Ketika Anda berada di ini lingkungan berbasis teks, Anda akan ingin menentukan hal yang disebut argumen baris perintah. Yang hanya cara mewah mengatakan, Dengan kata lain pada prompt yang tweak perilaku apa pun Program yang Anda jalankan. Jadi khusus program saya berjalan, dengan mengetikkan nama dentang, adalah program yang disebut dentang. Jadi ini atau sekolah tua setara dengan mengklik ganda Microsoft Word atau icon beberapa program. Aku bukan hanya mengetik nama, tapi dalam versi ini perintah, Saya kemudian memiliki dasbor ruang o halo halo ruang dot c. Jadi bahkan jika Anda belum pernah bermain di dunia ini sebelumnya, hanya mengambil menebak apa tidak dasbor o halo lakukan? Atau apa itu memberitahu dentang lakukan? Ya. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Ini hanya menetapkan output file menjadi halo bukannya konyol titik keluar. Dan, memang, mari kita coba ini. Jadi jika sekarang saya lakukan, pertama mari kita lakukan ini, r m halo. Itu hapus. Dan itu akan mengatakan hapus file biasa halo, yang adalah tidak perlu misterius, tapi itu hanya berarti apakah Anda ingin menghapus file, dan saya ketik y untuk yes. Dan perhatikan, jika Anda melirik atas kiri, itu menghilang dari atas sana. Mari saya lakukan dentang dasbor o, dan Aku akan pergi ke depan dan melakukan halo, di semua topi, halo dot c. Sekarang, jika saya melakukan dot slash halo, apa yang Anda harapkan? Mungkin kasus sensitif. Mungkin tidak. Mari kita lihat. Tidak ada berkas atau kamus tersebut. Dan kita dapat jenis menipu dengan hanya melihat kiri atas. Apa yang saya jelas menyimpan program sebagai? Semua caps halo. Jadi memang, itu akan untuk membuat perbedaan. Jadi sekarang halo dunia kembali. Sekarang ini semua baik dan bagus, dan semua sangat pikiran-mati rasa, untuk semacam get macet dalam ini rincian, tetapi pemahaman mereka baik. Mengetik ini semakin mantra panjang tidak akan menjadi sangat menyenangkan, sehingga orang-orang di dunia menciptakan program lain, beberapa tahun yang lalu, yang disebut membuat, yang cukup sederhana memungkinkan Anda untuk mengetik make, nama program Anda ingin membuat, dan membuat cerdas dalam hal itu akan terlihat di folder saat ini, alias direktori, dan jika Anda memiliki file disebut halo dot c, yang merupakan file akan mengkompilasi untuk Anda dalam sebuah program yang disebut halo. Jadi itu adalah cara yang lebih sederhana dari melakukan perintah lebih samar yang kita lakukan sebelumnya. Dan kami telah pra-dikonfigurasi CS50 IDE tahu bahwa itu harus melakukan dasbor o dan sejumlah bendera lainnya, atau argumen baris perintah, bahwa kita akan melihat sebelum lama. Tapi mari kita sekarang benar-benar melakukan sesuatu yang lebih menarik. Hanya mengetik dunia halo semua waktu adalah tidak semua yang menarik. Jadi biarkan aku pergi ke depan dan perubahan program ini dan mengatakan, halo David. Sekarang aku akan pergi ke sini. Aku akan pergi ke depan dan melakukan membuat halo. Dan lagi sekarang Anda lihat membuat menunjukkan Anda semakin lama urutan perintah bahwa itu lakukan karena kami sudah pra-dikonfigurasi seperti itu, tapi kami tidak perlu khawatir untuk saat apa yang dilakukannya selain itu kompilasi dot slash halo, halo dunia. Ada apa? Ya. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Jadi, kesalahan noobie. Saya melihat ini super halus, tapi tanda bintang di sini, di tab, hanya berarti Anda belum menyimpannya, dan browser dan program lain melakukan hal ini kadang-kadang. Sehingga kontrol s atau perintah s harus menyimpannya. Sekarang biarkan aku pergi ke depan dan menjalankan kembali program. Ulang. Tepat, sehingga proses multi-langkah. Tidak ada yang sangat kompleks, tetapi setiap kali kita mengubah file, kita perlu mengubah dihasilkan dengan nol dan satu, dan dot slash halo. Wow. Jadi ini sangat underwhelming bahwa kita hanya dicetak ini. Mari kita membuat sesuatu yang sedikit lebih dinamis, sekarang. Nah ternyata, yang seperti Scratch, C mendukung variabel. Dan ternyata jika Anda ingin memiliki variabel yang menyimpan, bukan angka seperti kita biasanya lakukan dengan Scratch, tapi seperti kata, atau frase, atau nama, Anda dapat menentukan variabel menjadi tipe string. Jadi kita akan melihat lebih banyak ini hanya dalam beberapa saat, tapi ternyata C itu, dan banyak bahasa seperti itu, memiliki jenis yang sangat spesifik dari variabel. Ini tidak sama seperti aljabar, di mana Anda mendapatkan x, y, dan z dan mereka hanya selalu angka, dalam bahasa pemrograman Anda dapat menyimpan nomor, Anda dapat menyimpan karakter individu, Anda bisa menyimpan seluruh kata, Anda bisa menyimpan seluruh gambar, file suara keseluruhan, dan sejenisnya. Jadi kita perlu menentukan apa jenis variabel kita. Dan dengan konvensi aku akan menelepon saya variabel s hanya karena itu ringkas, dan s singkatan tali. Dan kemudian aku akan menyimpan dalam variabel ini, hanya suka dengan Scratch ketika saya menggunakan set blok, Aku akan menggunakan operator penugasan di C, yang cukup baik adalah sama menandatangani, tapi tanda sama melakukan hal ini. Bergerak sesuatu dari kanan ke sisi kiri dari ekspresi. Jadi apa yang saya lakukan, harus jelas dalam garis lima, yang saya sudah dinyatakan variabel. Saya sudah bilang komputer, memberi saya memori untuk variabel, menyebutnya s, dan tahu sebelumnya bahwa aku akan untuk menempatkan string di dalamnya. Dan string hanya urutan karakter. Ini sebuah kata, atau frase, atau paragraf, tapi itu urutan karakter. Ini bukan angka. Apa string yang aku akan menempatkan ke variabel itu? Nah, tampaknya mengutip tanda kutip, "Hannah". Sekarang perhatikan pola yang muncul. Ada ekspresi tangan kiri. Ada ekspresi tangan kanan, dipisahkan oleh tanda sama. Dan hanya mengambil menebak, jika asing tetap, dengan apa titik koma lakukan. Apa itu mungkin melakukan bagi kita? Ya? AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Itu hanya mengakhiri garis. Benar? Komputer ingin menjadi blak-blakan mengatakan, secara harfiah, apa yang harus dilakukan. Seperti selai kacang dan jelly misalnya roti, jika Anda tidak menentukan apa yang Anda berniat, mungkin dibiarkan penilaian atau error. Titik koma berarti, itu saja untuk perintah ini. Ini menjadi super tepat, dan itu hal yang sangat mudah untuk meninggalkan off. Tampaknya jadi sekarang program ini tidak untuk akan berperilaku secara berbeda sampai aku membuatnya lebih dinamis. Jadi, daripada sulit bisa saya sendiri nama, biarkan aku menempatkan nilai pengganti. Dan ternyata, dan saya tahu ini dari setelah membaca dokumentasi, dan menggunakan fungsi untuk tahun, yang printf dirancang untuk menjadi dinamis. Anda tidak harus tahu terlebih dahulu apa kata-kata Anda ingin menempatkan di dalamnya. Anda malah dapat memiliki placeholder, seperti persen s, yang akan memberitahu komputer, menempatkan string di sini. Yang string yang kita ingin menempatkan di sana? Will ternyata antara kurung, yang ingat, demarkasi input ke fungsi, jika Anda memiliki koma daftar hal-hal yang terpisah di sini, kita benar-benar lulus dalam beberapa input ke fungsi. Jadi hanya seperti beberapa Scratch blok, Anda mungkin tidak telah bermain dengan mereka untuk proyek Anda belum atau sama sekali, beberapa blok Scratch memiliki dua input. Dua kotak putih Anda bisa ketik nomor atau kata-kata ke dalam. Jadi untuk tidak C memiliki fungsi seperti printf yang dapat mengambil dua input. Dan lagi, koma ini adalah memisahkan mereka. Jadi dalam bahasa Inggris, lagi bahkan jika Anda belum pernah diprogram sebelumnya, oleh logika printf adalah fungsi, mengambil dua input, salah satunya merupakan tempat, apa yang akan Anda berharap printf akan melakukan dengan masukan ini? Ini akan menyapa Hannah, mudah-mudahan. Jadi untuk melakukan ini kita harus menyimpannya. Aku akan zoom out. Aku akan kembali ke sini dan berkata, membuat halo masuk. Oh. Sesuatu yang salah, dan benar-benar ini cukup luar biasa. Saya memiliki enam baris kode dan seperti 12 baris kesalahan. Jadi, melihat ke depan untuk ini. Jadi apa yang terjadi di sini? Jadi aturan terbaik praktis di sini, terutama ketika Anda memulai, tidak mendapatkan terganggu oleh hal-hal yang di bagian bawah. Bahkan, saya sangat sengaja hanya menggulir up karena sangat sering, komputer adalah tidak semua yang cerah perangkat. Ini akan bingung. Jika melihat satu hal yang itu tidak mengerti, mungkin kesalahan lainnya baris kode sebagai salah, meskipun mereka baik-baik saja. Sehingga Anda selalu ingin bekerja top down melalui kesalahan. Dan diakui ini Super misterius pada saat ini. Kesalahan, penggunaan dideklarasikan string identifier. Apakah saya maksud standar dalam? Tidak, saya berarti tali. Dan itu menunjuk, mungkin itu salah ketik. Semacam seperti, spell-checking di cara yang sangat culun, tetapi alasan di sini, dan Anda akan tahu ini hanya dengan praktek, adalah yang ternyata string yang tidak ada dalam C. Bahkan, C adalah bahasa yang sangat tua, dan itu tingkat yang sangat rendah, dan itu tidak banyak fitur bahwa Anda mungkin telah tumbuh dengan jika Anda memiliki, pada kenyataannya, diprogram di Jawa, karena beberapa dari Anda memiliki, tetapi Anda dapat mengajarkannya hal-hal baru. Dan memang, kita telah melakukan CS50 ini, meskipun pada akhir semester, semua roda pelatihan ini akan telah diambil off, apa yang kita lakukan di ini dua minggu pertama awalnya adalah kita juga memiliki Anda termasuk CS50 dot h. Yang merupakan file header. Lebih lanjut tentang bahwa di masa depan. Ini adalah file yang berisi fungsi bahwa kita telah ditulis untuk Anda. Dan di antara mereka adalah fungsi fungsi untuk mendapatkan masukan dari pengguna, seperti string, dan angka, dan bilangan real, dan banyak lagi. Tetapi juga memiliki beberapa cara pintas. Ini mendefinisikan Boolean sebagai tipe data. C tidak memiliki benar atau salah. Tapi kita bisa memberikan gagasan benar atau salah dengan cara perpustakaan ini. Dan itu juga tidak memiliki string dibangun pada sampai kita termasuk baris ini. Jadi baris kode ini memberitahu compiler, hey, dentang, melihat dalam file ini untuk keseluruhan sekelompok kode yang CS50 telah menulis sehingga siapa saja yang menggunakan file ini dapat mengambil untuk diberikan fitur mereka telah menambahkan. Jadi sekarang biarkan aku pergi ke depan dan menghapus layar, dan jika penasaran Aku hanya mengatakan control l setiap kali untuk membersihkan layar, atau Anda dapat mengetik jelas. Aku hanya akan pergi ke depan sekarang dan Jenis membuat halo, dan semuanya baik-baik. Masih output misterius, tapi itu bukan pesan yang salah. Sekarang jika saya lakukan dot slash halo, dan sebagai samping, dot slash asing bagi sebagian besar. Ini hanya berarti, dot berarti direktori saat ini. Jadi jika Anda pernah menggunakan DOS, atau Linux, atau Unix Anda mungkin telah melakukan sesuatu seperti cd dot dot, di mana dot dot berarti pergi ke belakang di waktu, atau pergi ke belakang, atau lebih tinggi dalam direktori Anda. Dot hanya berarti melihat di direktori saat ini. Saya ingin halo, yang ada di sini. Dan memang, sekarang menyapa Hannah. Dan jika saya mengubahnya lagi Maria, ulang itu akan membuat halo, dot slash halo, program terus berubah. Tapi ini masih merupakan Program cukup bodoh. Jika saya ingin kapal program ini, atau memberikannya kepada seorang teman, atau memberikannya kepada Maria atau Hannah dalam hal ini, itu baik-baik saja. Saya dapat menyesuaikannya untuk mereka berdua, tapi itu tidak akan menjadi dinamis. Mereka tidak bisa mengubahnya setelah itu dikompilasi ke dalam mereka nol dan satu. Jadi apa yang kita lakukan sesuatu yang lebih cerdas? Bagaimana jika, bukannya hard-coding ke dalam program nama orang ini, apa jika kita hanya mendapatkan string pada permintaan? Jadi dengan kata lain, biarkan aku melakukan ini. Aku akan mengkompilasi ulang program ini. Dan biarkan aku memperbesar di bagian bawah sekarang. Membuat halo dot slash halo. Sekarang tidak ada yang terjadi. Bisakah kita mendapatkan relawan cepat untuk membuat sesuatu terjadi? Ayo up. Siapa namamu? PANCHO: Pancho. DAVID J. Malan: Pacho? Ayo up. Setelah Anda mendapatkan di sini, ini adalah akan menjadi sangat underwhelming, tapi lebih menarik dari saya mengetik itu. Jika Anda ingin pergi ke depan dan ketik Anda Nama, saya membuat program ini hanya untuk Anda. Cukup ketik nama Anda. Masukkan. Indah. Baiklah, terima kasih banyak. PANCHO: Terima kasih banyak. DAVID J. Malan: OK. [Tepuk Tangan] Itu sangat baik. Di sini Anda Go. Apa yang kita lakukan? Jadi kita akhirnya, setidaknya, membuat program ini yang dinamis. Sekarang itu masih jelas dengan desain underwhelming, tapi kami akhirnya memiliki kemampuan sekarang untuk menulis kode di muka, banyak seperti penulis printf, dan kemudian secara dinamis beradaptasi berdasarkan masukan kami diserahkan, baik oleh programmer, atau dengan manusia yang sebenarnya berinteraksi dengan program. Jadi mari kita sebenarnya sekarang coba untuk melakukan beberapa konstruksi lainnya dan melihat apakah kita tidak bisa membuat program sendiri lebih canggih. Jadi mari kita pergi ke depan dan bukannya menulis satu ini dari awal, Aku akan pergi ke hari ini source code, dan semua ini tersedia di lapangan ini website, dan Anda dapat drag dan drop ke lingkungan Anda sendiri datang Jumat sekali masalah set 1 memberi Anda instruksi, atau Anda bisa melakukannya pada baris perintah sebagai baik, tetapi lebih untuk datang di p set 1. Mari kita lihat apa yang ada di program ini di sini disebut, penambah dot c. Sekarang saya sudah berkomentar itu, tapi apa yang baru? Pada pandangan pertama, lini apa kode benar-benar baru? Mungkin tidak fundamental asing sekarang. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya, sehingga int x sama mendapatkan n. Kami belum pernah melihat semua ini sebelumnya, tapi int mungkin simbol untuk apa jenis variabel, [? dari?] integer. Jadi int untuk integer. Itu hanya menjadi lebih ringkas. x hanya sewenang-wenang. x dan y dan z masih cukup masuk akal untuk nomor, tapi umumnya kita akan menggunakan kata-kata sekali program kami mendapatkan lebih kompleks. Dapatkan int, tentu saja, seperti get tali, mungkin akan mendapatkan int dari pengguna, dan kemudian kita akan melakukan hal yang sama dengan y. Dan ternyata, meskipun ini baris terakhir, 24, terlihat lebih kompleks, itu akan mengatakan jumlah ini dan itu adalah hal lain ini. Dan pemberitahuan persen i mungkin menunjukkan apa? Peran apa persen i rupanya melayani? Ini hanya penampung. Benar? Persen s adalah string, persen saya adalah untuk integer. Ada akan menjadi persen f untuk nilai floating point, yang adalah hanya nomor dengan titik desimal. Dengan kata lain, bilangan real. Jadi mari kita benar-benar kompilasi ini memprogram sangat cepat dan jangan membuat penambah. Whoops. Kesempatan yang baik. Jadi perhatikan di sini, selama ini pengguna saya nama untuk akun ini jharvard. Saya di CS50 IDE, alias IDE50. Dan sekarang di sini biru, adalah menyebutkan, tapi dari lingkungan, dari mana saya. Dan pada kenyataannya, jika saya tampilannya ke atas di sini, melihat bahwa saya memiliki IDE50 dan saya melihat kata ini, jika Anda jenis putar kepala ke samping, ruang kerja. Singkatnya, fakta bahwa Saya melihat tilde slash kerja berarti bahwa dalam teks ini lingkungan perintah berbasis, Saya dalam setara teks ini grafis folder di sini. Jadi ketika saya melakukan dot slash penambah, itu mengatakan tidak ada aturan untuk membuat target penambah berhenti. Aku tidak tahu apa artinya, tapi itu buruk untuk beberapa alasan. Tidak ada berkas atau kamus tersebut bahkan lebih jelas. Dimana kemudian? Berdasarkan mana saya diklik untuk membuka file sebelumnya. Mana mungkin? Ini mungkin dalam sumber satu w, Rabu, dan saya bisa melihatnya, memang, jika saya membuka bahwa sampai. Ada penambah dot c, tapi di lingkungan berbasis teks ini, lagi, aku harus super eksplisit. Jika saya ingin mengubah direktori ke sumber satu hari Rabu, saya perlu mengetik, cd ruang sumber satu Rabu masuk dan sekarang prompt berubah saya untuk memberikan isyarat visual yang Aku, memang, di tempat lain di lingkungan saya, tapi sekarang saya bisa lakukan membuat Adder, tampaknya bekerja, dot slash penambah, memberikan saya integer. Satu. Dua. Jumlah satu dan dua adalah tiga. Tapi jika saya tidak bekerja sama, mari kita lihat apa yang bisa dilakukannya int. Beri aku integer. Tidak. Coba lagi. OKE. Baik. 50. 50. Baiklah. Jadi akhirnya bekerja sama. Dan itulah beberapa fungsionalitas yang fungsi-fungsi ini dapat telah dibangun di untuk Anda. Jadi dalam pelaksanaannya dari mendapatkan int, pemrograman apa membangun dari minggu lalu mungkin di ada untuk memaksa perilaku ini coba lagi, coba lagi, coba lagi? Ya, mungkin ada semacam lingkaran. Ini akan terlihat sintaksis berbeda dari blok Scratch itu, tapi itu memang apa yang di dalam file. Dan dalam waktu beberapa minggu kita akan benar-benar melihat perpustakaan CS50 seperti apa yang ada di dalamnya, tapi ada loop memaksakan hal itu. Mari kita bermain sedikit konyol permainan di sini dengan file ini. Kondisi nol dot c. Kami hanya akan umumnya mulai menghitung dari nol. Dan saya terus bergulir melewati beberapa hal di atas. Warna biru sini, berbatas tegas dengan semua dari bintang-bintang ini dan garis miring, Bagi Anda yang memprogram sebelumnya, apa itu? Mengapa kita terus melompat-lompat di atasnya? Apa? AUDIENCE: Ini komentar. DAVID J. Malan: Ya. Ini hanya komentar. Ini adalah komentar untuk manusia untuk membaca, bahwa dalam kasus kami, memberitahu kita apa nama file adalah, siapa yang menulisnya, dan apa yang dilakukannya, sehingga Anda tidak memiliki untuk membaca kode untuk mengetahui apa file ini adalah semua tentang. Ini hanya deskripsi, tapi fungsional itu tidak relevan. Dan aku bahkan bisa menghapusnya dari file saya dan itu tidak memiliki dampak. Garis juicy ini Dua yang pertama di sini, sekarang. int void main setara dengan ketika kami bendera hijau diklik, jadi kita akan meninggalkan menjadi untuk hari ini, dan kami akan kembali, akhirnya, seperti apa int dan kekosongan yang, tapi sekarang, melihat apa yang telah kulakukan di sini juga, Anda juga bisa, jika Anda memiliki sejalan komentar, jika Anda memiliki a berpikir Anda ingin berbagi tentang garis tertentu dari kode, konvensi di C adalah untuk melakukan slash slash, dan kemudian beberapa kata ringkas, bukan kalimat penuh, umumnya tidak paragraf, yang hanya menjelaskan kepada Anda, atau Anda TF, atau pembaca lain atau rekan kerja, apa kode Anda lakukan. Jadi, daripada harus melihat ini dan menyimpulkan dari garis sembilan dan 10, apa yang ini lakukan, sejalan delapan Saya hanya memberikan komentar untuk meminta pengguna untuk integer, maka saya tidak perlu berpikir terlalu keras tentang apa garis sembilan dan 10 adalah. Aku hanya tahu bahwa itulah yang kolektif yang mereka lakukan. Bagaimana? Nah, inilah prompt. Berikut mendapatkan dari int. Dan berdasarkan sebelumnya perilaku, sepertinya mendapatkan int cukup pintar untuk memastikan bahwa manusia bekerja sama dan memberikan integer. Tapi sekarang kita melihat ini. Dan ini mengingatkan Scratch. Saya mengklaim bahwa aku menganalisis input pengguna, tapi agak tidak akurat. Dan ini ternyata di C adalah bagaimana kami mengungkapkan jika lain, cabang, garpu di jalan, tapi aku mengatakan agak tidak akurat. Apa bug dalam program ini? Tentang lanjut kembali? Ya. AUDIENCE: [tidak terdengar] nol. DAVID J. Malan: Ya. Jadi jika saya ketik nol, mari kita pertimbangkan persis bahwa kasus kasus, atau sudut, jika Anda mau. Jadi jika saya ketik nol, yang dari blok akan rupanya ambil itu? Jika atau yang lain? The lain, dan itu akan mengatakan, Anda memilih angka negatif. Dan memang, nol tidak seharusnya menjadi positif atau negatif, dan sehingga akan keliru. Itu akan menjadi bug. Jadi bagaimana kita bisa memperbaiki ini? Seseorang yang tidak pernah diprogram sebelumnya? Apa kau mau-- AUDIENCE: [tidak terdengar] DAVID J. Malan: mencabut? AUDIENCE: [tidak terdengar] DAVID J. Malan: Oh, Anda memiliki? Seseorang yang tidak pernah diprogram sebelumnya. Ingin mencoba tangan Anda di ini, dalam baju merah? Ayo up. Oh ya, ayolah, jika Anda tidak keberatan. Jadi tidak pernah memiliki diprogram sebelumnya, siapa namamu? LAUREN: Lauren. DAVID J. Malan: Lauren, baik-baik. Jadi memperbaiki bug ini bagi kita. Anda tidak pernah melihat C, mungkin, dan mungkin tidak ada bahasa lain. Jadi memperbaiki program ini bagi kita. Senang bertemu ya. Tidak ada tekanan. LAUREN: Ya. DAVID J. Malan: Tetapi sekali lagi, jika ini berjudi berjalan sesuai rencana, takeaway di sini akan menjadi, hanya sekali lagi, untuk memulai untuk melihat pola dan menyimpulkan dari sintaks yang ada bagaimana lagi Anda mungkin mengungkapkan sendiri, tidak ada pun intended, dalam rangka untuk menangkap beberapa skenario tambahan. Jadi kita katakan lain jika. printf, baik. Dan perhatikan dengan CS50 IDE, dan IDE frankly-- singkatan Terpadu Lingkungan pengembangan. Ini hanya cara mewah untuk mengatakan program yang membantu program yang Anda. Ini melakukan hal-hal seperti user friendly ketika Anda mengetik satu kurung, secara otomatis memberikan Anda yang lain. Anggapan adalah bahwa Anda akhirnya akan ingin mengetik itu, dan juga melakukannya dengan tanda kutip. Jadi saya suka baris 23. 99% dari perjalanan ke sana. Seseorang ingin berpadu dengan tip? Aku mendengar koma dari penonton. Baik. Jadi yang melengkapi itu. Dan sekarang, saya hanya memiliki sedikit kekhawatiran dengan garis 21. Bagaimana kita ingin mengungkapkan ini? Pertanyaan apa yang kita inginkan bertanya, menurut Anda? Jadi sebelumnya kita bertanya, jika n lebih besar dari nol, melakukan ini. Lain, melakukan itu. Jadi kita perlu memilih Pertanyaan untuk bertanya di sini. AUDIENCE: [tidak terdengar] DAVID J. Malan: Baik. Jadi jika n sama dengan nol. Sangat baik. Jadi mari kita berhenti sebentar di sini. Terima kasih banyak untuk menantang ini. Biarkan saya memberi Anda sedikit memang layak bola stres, mungkin ada. Jadi kita sudah hampir sampai. Bahkan, Lauren, jika Anda tidak pikiran, biarkan aku membuat satu men-tweak di sini, hanya untuk konsisten bahkan dengan apa yang kita lihat di Scratch, apa yang ingin saya lakukan dengan garis-garis 21 dan 24, hanya berdasarkan lagi tentang bagaimana kita melakukan ini di Scratch, mungkin? AUDIENCE: Pindah ke atas. DAVID J. Malan: Ya, bergerak ke atas. Jadi kondisi lain, ketiga, atau keempat, atau kelima, atau cabang akhir, sebaiknya memang datang sesudahnya, dan itu hanya oleh konvensi, hanya karena jika Anda mau. Jadi saya perlu membuat tweak ini. Dan saya harus menempatkan saya penjepit keriting kembali ke sini. Dan sekarang, program ini akan mengkompilasi. Kami sangat dekat, tapi ada bug sangat, sangat halus. Mari kita lihat apa yang terjadi. Pertama, biarkan saya pergi ke depan dan zoom out. Aku akan pergi ke depan dan ketik membuat kondisi nol. Oh, aku berbohong. Sekarang compiler sebenarnya cukup pintar. Dan aku tidak benar-benar memahami itu pesan kesalahan. Menggunakan hasil dari tugas sebagai kondisi tanpa tanda kurung, tampaknya buruk. Tapi apa artinya? Nah lagi, mencari pola dalam kode yang telah kita lihat sebelumnya, apa yang garis 17 benar-benar melakukan, meskipun Lauren dimaksudkan sedikit sebaliknya? Ya. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Jadi ingat tanda sama, rupanya seperti yang kita telah digunakan sebelumnya, tidak sama. Tugas, dari kanan ke kiri. Jadi garis 17 pada saat ini adalah suatu kondisi, dan itu mengeksekusi kode di dalam kurung, tetapi ketika kode yang mengeksekusi, apa yang terjadi dengan nilai nol? Apa yang terjadi dengan nilai n? Menjadi nol. Jadi jika n menjadi nol, dan lagi, seperti per pekan lalu, kita umumnya mengatakan bahwa nol adalah palsu dan satu benar, atau ya adalah salah satu dan tidak ada adalah nol. Jadi benar dan salah, satu dan 0. Jika n sebagai garis 17 telah diberikan nilai 0, adalah nol benar? Tidak. Menurut definisi, nol adalah palsu. Itu konvensi kami akan melekat pada bergerak maju. Sehingga akan garis 18, 19, dan 20 pernah berlaku sekarang, secara logis? Mereka tidak bisa. Jadi kami bertanya pertanyaan tapi tidak cukup tepat, dan Anda tidak akan tahu ini kecuali Anda sudah melihatnya, solusi di C adalah ketika Anda ingin mengungkapkan kesetaraan, Anda mengatakan equals sama. Jadi tanda sama sudah habis oleh tugas, dari kanan ke kiri. Sama sama berarti sama. Dan jika Anda benar-benar ingin pikiran Anda untuk membungkuk, dalam JavaScript dan PHP, ada sama sama sederajat, yang berarti sesuatu yang lain sama sekali, tapi kita akan mendapatkan bahwa sebelum lama. Jadi ini adalah memperbaiki sederhana, tetapi menyadari super mudah untuk membuat kesalahan ini, dan kemudian bertanya-tanya dan perjuangan untuk menit, jika tidak satu jam, mengapa saya tidak kode mengeksekusi karena saya berniat? Itu karena Anda tidak memberitahu itu tepat apa yang Anda maksud. Sehingga hampir sempurna, dan itu bagus bahwa kita sengaja menemukan dua kecil hal karena jika kita memperbaikinya, dan saya membuat kondisi nol dot slash kondisi nol, Saya ingin integer silakan. Mari kita lihat. Tidak. Ini akan memaksa saya untuk melakukannya. Jadi 42. Aku mengambil angka positif. Jadi sekarang bagaimana cara membuktikan program ini benar? Jika Anda seorang matematikawan, Anda tidak bisa benar-benar membuktikan ini dengan trial and error, benar? Anda tidak bisa hanya bukti oleh Misalnya, tapi setidaknya sebagai seorang programmer kita tidak akan mencoba untuk membuktikan untuk saat bahwa ini sebenarnya benar, tapi aku mungkin harus menguji beberapa kasus representatif. Saya telah diuji 42. Saya bisa menguji 43. Saya bisa menguji 44. Uji 45. Benar? Tapi aku bisa melakukan ini waktu yang sangat lama. Apa yang akan menjadi lagi kasus yang menarik untuk mencoba? AUDIENCE: [tidak terdengar] nol. DAVID J. Malan: Jadi nol. Tentu saja. Dan baik, kami punya kali ini, berkat kode baru Lauren. Apa kasus lain yang baik untuk mencoba? AUDIENCE: satu negatif. DAVID J. Malan: satu negatif, dan mungkin sesuatu yang sedikit lebih besar, jadi mungkin negatif 42, tetapi secara umum, ketika pengujian program Anda bergerak maju, Anda akan ingin untuk berpikir untuk diri sendiri, seperti apa adalah kasus yang berbeda mendasar. Dan saya berani mengatakan kasus negatif, kasus positif, dan kasus nol cukup banyak putaran ini keluar. Mari kita lihat varian meskipun ini. Kondisi satu. Ini adalah solusi yang tepat di sini, sehingga Anda akan melihat dua dan online, jika Anda berjalan melalui penelusuran, akan umumnya kenaikan bertahap ini sampai kita mendapatkan persis pendekatan yang tepat. Bagaimana jika kita ingin bertanya dua pertanyaan sekaligus? Mari saya membuka ini sebagai gantinya. Non-switch, untuk alasan kita akan melihat lain waktu. Apa yang baru sintaksis di sini? Saat ini saya bermain game di mana komputer memberitahu saya, memberikan saya integer antara satu dan 10, dan kemudian saya menilai masukan pengguna. Dalam bahasa Inggris, berdasarkan kode yang Anda lihat di sini warna biru, apa yang program ini lakukan? AUDIENCE: [tidak terdengar] dijemput sejumlah besar atau kecil. DAVID J. Malan: Ya. Itu hanya mengadili apakah Aku mengambil besar, atau sedang, atau sejumlah kecil berdasarkan sangat definisi sewenang-wenang kecil, menengah, dan besar di sini, tapi pemberitahuan sintaks yang baru ini. Tidak ada kurang dari atau sama dengan int menandatangani, atau lebih besar dari atau sama dengan, di mana satu di atas yang lain, bahwa Anda dapat mengungkapkan dalam seperti Microsoft Word. Jadi dalam bahasa pemrograman Anda biasanya hanya melakukan dua karakter, satu demi satu. Dan apa ini mungkin mewakili, ampersand ampersand. AUDIENCE: [tidak terdengar] DAVID J. Malan: Ya. Ini hanya berarti dan karena Ternyata penulis C menggunakan ampersand tunggal, yang Anda mungkin berpikir akan menjadi sempurna untuk gagasan dari dan, sudah habis, ampersand sehingga ampersand sebenarnya menangkap kasus kita benar-benar inginkan. Jadi mari kita tersandung di dua hal. Biarkan aku pergi ke depan dan membuka satu. Sesuatu yang agak mengkhawatirkan. Ketidaktepatan dot c. Mari saya memperkenalkan dua hal di sini. Satu, pemberitahuan yang bisa kita lakukan matematika, seperti seperti sebelumnya ketika kita lakukan ditambah dari dua angka, x dan y. Apa yang program ini ternyata lakukan? Aku sudah tidak berkomentar itu belum, dan saya telah memperkenalkan persen f, tapi aku cepat katakan sebelumnya persen f berarti floating point nilai, yang merupakan bilangan real. Sesuatu dengan desimal titik, yang bukan merupakan bilangan bulat. Apa yang Anda pikirkan program ini adalah mencoba untuk menunjukkan di layar? Ya? AUDIENCE: Hasil salah satu dari 10. DAVID J. Malan: Ya. Apa hasil dari satu dibagi dengan 10. Benar, karena semua yang Anda miliki mungkin tumbuh mengetahui bahwa salah satu dari 10 adalah apa? Ya, itu hanya 1/10 atau 0,1. Benar? Jadi mari kita lihat apa ini sebenarnya. Jadi biarkan aku pergi ke depan dan menyimpan ini. Biarkan aku pergi ke sini. Membuat ketidaktepatan dot slash ketidaktepatan, dan pemberitahuan, juga, dalam lingkungan Linux, Anda tidak harus mengetikkan ketidaktepatan dan mengambil sepanjang hari. Umumnya, jika anda menekan Tab, itu akan menyelesaikan pikiran Anda untuk Anda, didasarkan pada kata-kata yang tersedia di direktori saat ini. OKE. Jadi Anda benar. Satu dibagi dengan 10 adalah, pada kenyataannya, 0,1. Tapi aku sedikit penasaran. Dan ternyata printf mendukung beberapa fitur dimana Anda dapat menentukan lebih dari nomor default poin desimal. Jadi jika saya ingin melihat 10 desimal poin yang bisa saya lakukan persen, untuk simbol placeholder, dot 10 untuk, memberikan 10 poin desimal, dan kemudian masih floating point nilai, dan, sebagai samping, apa backslash ini n rupanya kita terus menggunakan? Ternyata itu adalah simbol untuk baris baru. Ini adalah cara yang sangat eksplisit mengatakan ke komputer, memindahkan kursor ke depan baris setelah Anda selesai. Dan kita akan melihat apa yang terjadi ketika kita tidak melakukan itu. Mari saya ulang membuat ketidaktepatan. Sekarang dot slash ketidaktepatan. OKE. Masih tepat. Satu dibagi dengan 10. Sekarang aku mendapatkan sedikit penasaran, meskipun. Bagaimana jika saya melihat 20 desimal menunjukkan, ulang, jalankan kembali, dan sebagai samping untuk kecepatan, Anda juga dapat menggunakan up dan turun panah untuk gulir melalui sejarah Anda, sehingga Anda tidak harus terus mengetik ulang perintah ini, masukkan. Huh. Aku tidak tahu bahwa di sekolah dasar. Baiklah, jadi biar lihat seperti 29 tempat keluar. Mungkin itu hanya kebetulan. Mungkin komputer saya bertindak aneh. Itu tidak apa-apa, kan? Ini melakukan sesuatu deterministik. Sehingga membuat ketidaktepatan. OK, yang kacau. Jadi apa yang terjadi? Jadi tampaknya Anda guru telah berbohong untuk Anda semua waktu ini untuk alasan yang akan kita lihat sebelum lama. Tapi mari kita berakhir dengan satu program lain. Ini adalah program kecil seseorang menulis beberapa tahun yang lalu, dan itu sebenarnya bagian dari kontes. Tidak ada yang benar-benar menulis kode seperti ini, dan jika Anda melakukannya, Gaya ini masalah. Tetapi orang-orang melakukan hal ini untuk hak membual. Untuk menulis paling membingungkan mencari program yang tetap melakukan sesuatu yang menarik. Dan catatan saya pikir kami akan meninggalkan pada hari ini, sebelum Colton memainkan kami di sini, adalah untuk menjalankan program ini, yang, bahkan hanya menggunakan C dalam hal ini berdasarkan teks- lingkungan, memberi kita ini. Sialan. [Tertawa] Bersiaga. [Tidak terdengar] c dasbor l m. Anda akan melihat magis mantra yang akan kita lihat sebelum lama. [Tidak terdengar] Baiklah. Dan sekarang Anda bahkan dapat melakukan hal-hal seperti ini. Itu dia. Untuk CS50 kita, akan melihat Anda pada hari Jumat. [MUSIC PLAYING] [Tepuk Tangan]