SPEAKER: Aku [Tak terdengar]. Dan aku seorang senior di Leverett House. Saya belajar ilmu komputer, dan aku TF untuk CS50. Sebagai mahasiswa, saya bahkan tidak memiliki laptop atau smartphone. Saya tidak memiliki pengalaman pemrograman. CS50 adalah program studi yang paling berkesan yang Aku mengambil di Harvard karena itu perjuangan, tapi itu benar-benar perjuangan menyenangkan pada saat yang sama. Dan aku membuat banyak menakjubkan, permanen teman-teman, dan saya belajar banyak kok keterampilan yang berlaku. Aku sangat senang bahwa saya tidak membiarkan saya kurangnya latar belakang menjadi alasan bagi saya tidak mengambil CS50. Aku [Tak terdengar]. Aku senior di Leverett House, kelas 2014. Dan aku mengambil CS50. DAVID Malan: Jadi ini adalah CS50. Ini adalah akhir minggu nol. Dan ingat di mana kami mulai waktu lalu, adalah dengan lampu ini, yang begitu populer bahwa kami pergi dan membeli lagi hari ini. Jadi saya pikir ini akan menjadi hal kami tahun ini - lampu meja jika Anda datang di atas panggung, setidaknya sampai kita kehabisan. Tapi kami menggunakan recall ini, untuk memperkenalkan dasar-dasar representasi data. Kami membutuhkan cara untuk mulai mewakili informasi dalam komputer. Dan cara termudah untuk melakukannya adalah dengan satu bahan, listrik. Dan hal yang paling sederhana yang dapat Anda lakukan dengan listrik menyalakannya dan off. Biarkan aliran elektron atau tidak. Dan menggunakan dua negara bagian dasar, off dan, atau salah dan benar, atau nol dan satu, kita mulai melihat bahwa kita bisa membangun up, dalam hal ini, dengan cahaya lampu, angka lebih dari hanya nol dan satu. Kami menghitung setinggi tujuh, misalnya, terakhir kali. Tapi semua harus kita lakukan adalah terus melemparkan lebih banyak cahaya lampu pada saat itu masalah dan, benar-benar, kita dapat mewakili sejumlah yang kita mungkin mungkin Anda inginkan. Yah, kita beralih cepat kemudian Rabu byte ini relawan. 8 bit adalah apa yang biasanya kita sebut byte, jadi di sini kita memiliki delapan relawan Rabu yang secara kolektif itu mewakili delapan bit. Dan ketika tangan mereka pergi up, mereka adalah salah satu a. Dan ketika tangan mereka bawah, ada nol. Dan kami memiliki orang-orang datang pada mengapa panggung? Apa yang kami dapat lakukan dengan ini urutan bit? Untuk membuat sebuah alfabet. Kami mampu membangun di atas bahwa pelajaran sebelumnya dipelajari dan benar-benar mulai membuat lebih menarik Informasi yang setidaknya lebih akrab bagi kita manusia. Dan ini akan menjadi berulang tema di seluruh 50, tetapi juga komputer ilmu yang lebih umum, ide ini layering, di mana, pada akhir hari, jika Anda benar-benar mulai dasar dengan komputer, ya, itu angka satu dan nol. Dan di bawahnya itu hanya listrik. Tapi kita sangat cepat mulai mengambil mereka rincian tingkat rendah untuk diberikan dan mulai lapisan di atas terakhir bekerja dilakukan agar kita, pada akhirnya, oleh akhir semester dan, benar-benar, lebih umum sebagai ilmuwan komputer dan programmer, dapat melakukan beberapa benar-benar hal yang sangat kuat dengan memanfaatkan kerja bahwa kita sendiri telah dilakukan dan juga berdiri di pundak orang lain. Sekarang kita cepat dialihkan pada hari Rabu dari hanya perlu merupakan informasi yang ingin untuk melakukan sesuatu dengan itu. Jadi apa yang kita mendefinisikan sebuah algoritma sebagai? Serangkaian instruksi. Jadi itu adalah serangkaian instruksi, yang sejumlah langkah yang Anda, manusia, atau komputer, lebih khusus, akan mengeksekusi satu demi satu dalam rangka untuk mencapai beberapa tujuan. Dan kami memiliki beberapa gol terakhir kali, salah satunya adalah untuk menghitung orang di ruangan itu. Dan contoh lain lagi adalah untuk menemukan Mike Smith dalam buku telepon. Jadi Anda mungkin ingat bahwa aku merobek telepon buku setengah menuju akhir ini sampai menemukan Mike Smith. Tujuan itu adalah untuk visual yang menunjukkan, sekali lagi, bahwa kami harfiah merobek masalah ini setengah, setengah, setengah, dan sangat cepat pergi dari seperti 1.000 halaman hanya satu halaman. Bagi Anda yang merindukan ini pada Rabu, saya pikir kami akan bermain kembali beberapa cuplikan dari apa yang Anda tidak terjawab. Mari kita lihat. [VIDEO PEMUTARAN] -Di sana kami pergi. 1500 halaman, garis bersih yang bagus, air mata yang sah. [END VIDEO PEMUTARAN] DAVID Malan: Jadi itu Rabu. Kami transisi, meskipun, Rabu sekarang untuk ingin mewakili algoritma dalam beberapa cara yang standar, bukan hanya menggambarkan mereka secara verbal, tetapi mencoba untuk mengungkapkannya secara tertulis atau layar komputer sehingga kita bisa mulai memperbaiki, dan memodifikasi mereka, dan, akhirnya, sebenarnya menganalisis seberapa benar atau seberapa cepat mereka. Jadi kami memperkenalkan gagasan ini dari pseudocode, yang, istilah awam, adalah apa? OK, kata-kata. Mari kita pergi sedikit lebih dalam dari itu. Inggris, yakin, hanyalah arah tujuan apa? Kata-kata yang dapat digunakan untuk membuat atau untuk mewakili algoritma. Jadi tidak ada satu bahasa yang dikenal sebagai pseudocode di dunia. Hanya saja bahwa Anda, dalam bahasa Inggris, atau apapun bahasa lisan Anda, gunakan semacam notasi sepintas untuk menyampaikan ide yang sangat singkat. Tapi kita akan melihat bahwa, tentu dengan Pseudocode Inggris, dan ternyata kebanyakan bahasa pemrograman sendiri adalah turunan dari bahasa Inggris itu sendiri, kita akan menemukan bahwa ada beberapa standar cara untuk mewakili pseudocode dan juga kode pemrograman. Jadi ketika Anda mulai melihat bahkan yang paling sederhana contoh hari ini, menyadari ini pola yang sama akan terulang minggu depan. Jadi pseudocode semacam bahasa menyerupai bahasa pemrograman. Dan contoh pertama kita melihat secara visual ditulis satu ini. Itu hanya sebuah program langkah ketiga, yang tujuan yang adalah untuk menghitung jumlah orang di kamar asrama untuk bahwa video pada hari Rabu. Tapi ada aspek yang menarik beberapa dari program yang paling sederhana. Dan ini akan menjadi tema berulang. Jadi bagi mereka yang tidak terbiasa dengan ini, satu, kami memperkenalkan variabel. Dan mungkin semua orang di ruangan ini akrab dengan variabel dalam konteks aljabar. Tapi di sini dalam pemrograman, variabel yang, satu, bisa disebut apa pun yang kita inginkan. Kami telah menggunakan n sebagai counter. Tapi kita bisa menggunakan counter kata, atau, seperti yang akan Anda lihat, kebanyakan kalimat apapun yang Anda mungkin ingin selama itu deskriptif, tapi itu benar-benar hanya wadah penyimpanan. Ini sepotong memori, beberapa jumlah bit, dan bervariasi oleh komputer, bagaimana banyak bit ada yang menulis variabel itu. Tapi kita bisa menempatkan nilai-nilai di dalamnya. Sejauh ini, kita hanya memasukkan angka. Tapi kita bisa menaruh kata-kata yang sebenarnya. Kita dapat menempatkan paragraf. Kita bisa menempatkan gambar - apa-apa, benar-benar, kita dapat mewakili dengan nol dan satu, kita dapat dimasukkan ke dalam tingkat pengertian yang lebih tinggi dari variabel. Jadi cukup lurus maju sana. Dan itulah satu baris. Tapi kami sangat cepat pindah dari satu baris untuk benar-benar melakukan sesuatu dengan variabel tersebut. Dan sejalan tiga, kami diperbarui N. Kami bertambah N. Dan kita bisa menulis ini berbagai cara. Tapi mungkin yang paling jelas adalah hanya untuk mengatakan, mengatur N setara dengan apapun N ditambah 1. Jadi itu kenaikan kami. Sementara itu, ada lingkaran. Dan yang satu ini, juga, mungkin cukup intuitif. Sebuah lingkaran hanya sesuatu dalam sebuah program itu terjadi lagi dan lagi, beberapa jenis siklus. Dan ini frase kunci di sini, untuk masing-masing, adalah sebenarnya sangat umum di seluruh sebagian besar bahasa pemrograman, termasuk yang akan kita lihat pada kursus. Setiap kali Anda melihat kata untuk itu, biasanya menyampaikan gagasan bahwa lingkaran, sesuatu yang siklis, yang akan terjadi. Tapi perlu dicatat satu rinci sintaksis lainnya. Fakta bahwa garis ketiga ada sebenarnya menjorok dengan memiliki memukul spasi beberapa kali disengaja. Karena konvensi manusia adalah sedemikian rupa sehingga, ketika Anda sedang melakukan sesuatu lagi dan lagi, dalam satu lingkaran, seperti yang dimulai pada baris kedua, Anda indent apa pun yang milik untuk loop yang hanya untuk membuat jelas bahwa itu garis tiga dan tidak, misalnya, line empat atau lima, jika ada baris untuk atau lima, yang bagian dari loop. Jadi ini lekukan sederhana menyampaikan bahwa ide dasar. Jadi kami menerapkan algoritma ini, sekarang, untuk beberapa contoh. Dan ini juga, contoh sederhana di dunia nyata. Tapi itu akan menjadi wakil dari bagaimana Anda akan pergi tentang pengujian Anda memiliki program semakin kompleks. Anda mencoba beberapa skenario, beberapa wakil input, dan lihat apakah Anda mendapatkan output yang diinginkan. Jadi contoh ini memiliki dua orang duduk di kamar asrama. Di sebelah kiri adalah bahwa kode semu yang sama. Dan ini adalah screen shot dari sangat Langkah terakhir dari aplikasi ini algoritma untuk mereka masukan, di mana ada dua orang di ruangan itu dan, ingat, seperti yang kita melangkah melalui jalur satu, dan dua, dan tiga, dan dua dan tiga dan dilakukan - pada akhir algoritma itu, kami memiliki memang dihitung dua rekan-rekan yang di dalam ruangan. Lalu kami coba contoh lain. Dan kami mengatakan apa jika ada nol orang di dalam ruangan? Apakah kode ini masih benar? Dan memang itu. Kebetulan garis bahwa dua dan, dengan demikian, jalur tiga atau tidak akan mengeksekusi. Mereka tidak akan terjadi sama sekali karena mereka hanya tidak berlaku jika ada nol orang di dalam ruangan. Tapi bukan masalah besar. Satu baris N diinisialisasi ke nol, sehingga meskipun hanya satu baris ini Program benar-benar berakhir menjadi berguna, masih menghasilkan jawaban yang benar, seperti ditunjukkan oleh orange nol di bagian bawah. Tapi kemudian kami memutuskan bahwa jenis algoritma bodoh. Itu cukup lambat. Tentu saja, aku bisa melakukan dua, empat, enam, delapan, sepuluh, ketika menghitung orang di sebuah ruangan. Jadi kita tweak algoritma, pseudocode, mengatakan, sekarang dalam dua baris, untuk setiap pasang orang di ruangan itu, melanjutkan ke dalam line tiga, selisih in dengan dua pada setiap iterasi. Sehingga akan bekerja di sini selama pasangan ini orang di dalam ruangan. Tapi kemudian, jika Anda mulai berpikir tentang ini, dan tidak butuh waktu lama untuk menyadari, tunggu sebentar ini akan pecah, rusak apa kasus sederhana? Jika ada tiga orang di dalam ruangan atau, lebih umum, ketika ada ganjil orang di kamar, termasuk satu. Kami akan merindukan orang itu di sini karena tidak ada pasangan tersebut. Jadi kita cepat ditangani oleh bukan memperkenalkan tambahan apa konstruksi pemrograman ke kode semu. Jadi kondisi, kita disebut , atau cabang. Dan itu dimaksudkan untuk menyampaikan, visual, yang ide cabang, di pertigaan jalan di mana Anda dapat melakukan ini atau, mungkin, sesuatu yang lain. Dan memang, kita mengatasi masalah ini dengan menambahkan baris 4, dengan mengatakan, benar-benar, di akhir, jika satu orang tetap, kemudian pergi ke depan dan menganggapnya istimewa. Jadi Anda semacam kasus khusus mereka, sehingga untuk berbicara, sehingga sekarang kita dapat menangani baik bahkan jumlah orang dan ganjil orang. Sekarang ada banyak cara kita bisa menyatakan ini. Dan terus terang, saya sudah bisa lebih nit pilih-pilih ketika datang ke pilihan saya Bahasa Inggris untuk pseudocode. Tapi setidaknya semangat ide yang disampaikan. Jika Anda menyerahkan kode ini ke teman yang tidak di CS, atau tidak pernah mengambil CS, kemungkinan besar mereka bisa mencari tahu, diberikan tiga orang di ruangan itu, bagaimana menghitung orang-orang berdasarkan pada petunjuk ini. Dan itu semua benar-benar kita ingin mencapai dengan pseudocode, entah bagaimana standarisasi bagaimana kita akan tentang ide yang mewakili sehingga kita dapat mulai melakukan lebih rumit hal masih. Jadi yang menuntun kita kemudian, hari ini, ke kode aktual. Kita mulai untuk program hari ini, meskipun di lingkungan yang ramah. Dan kemudian kita transisi yang sangat cepat untuk sintaks lebih misterius, tapi satu yang Anda akan melihat pada dasarnya sama dengan ide-ide akan melihat diwujudkan dengan bahasa ini lain hari ini. Ini hanya akan melihat sedikit berbeda. Jadi bukan hanya memanggil kode ini, aku akan menjadi sedikit lebih tepat dan berkata, selanjutnya, ketika menulis Program, Anda sedang menulis kode sumber. Ini semacam seperti pseudocode. Tapi kita akan lihat itu bukan semacam longgar ketika datang untuk memilih kata-kata yang Anda gunakan. Ketika programing dalam bahasa, Anda harus menggunakan kata-kata, frase, sintaks, bahwa orang lain telah memutuskan mewakili bahwa bahasa tertentu. Jadi pseudocodes terserah Anda. Sebuah bahasa pemrograman yang sebenarnya seperti C, seperti yang kita akhirnya akan melihat, adalah standar oleh orang lain. Jadi bagaimana kita pergi tentang menulis beberapa kode sumber? Yah aku akan pergi depan dan melakukan hal ini. Aku akan pergi ke depan dan membuka jendela di sini. Lebih pada minggu depan. Tapi ini adalah alat yang disebut yang CS50 alat. Aku menjalankan software pada saya Mac, meskipun Anda dapat melakukan hal yang sama pada komputer Windows, yaitu memberikan saya ilusi menjalankan berbeda sistem operasi sama sekali benar di sini di jendela pada Mac saya. Aku hanya penuh disaring sehingga Anda tidak benar-benar melihat Mac OS sekarang. Ini merupakan sistem operasi disebut Linux. Ini sangat populer. Ini sangat cepat. Ini sangat bebas, yang telah membuatnya menjadi sangat menarik, terutama di dunia komersial. Dan lebih pada menjelang akhir dari semester ketika kita menggunakan Linux cukup sedikit untuk pemrograman web dan hosting website aktual dan proyek. Jadi sekarang, hanya tahu bahwa ini adalah desktop yang dimaksudkan untuk terlihat samar-samar akrab bagi Windows dan Mac OS. Itu hanya memiliki beberapa nama yang berbeda dan ikon untuk hal-hal. Tapi ini yang disebut CS50 alat, mesin virtual yang, mulai minggu depan, kalian akan dijalankan dalam jendela pada Mac anda sendiri atau PC. Untuk hari ini, aku akan membuka paling sederhana program. Ini disebut gedit. Dan ini hanyalah sebuah editor grafis. Ini semacam seperti Microsoft Word, tapi lebih sederhana. Ini semacam teks seperti mengedit atau notepad. Ini hanya sebuah program yang sangat sederhana dengan yang menulis kata-kata di layar. Itu hanya jadi apa yang terjadi jika saya simpan file yang saya buat ketika program ini dengan ekstensi khusus seperti. c, bukan dari. doc, atau. xls, atau apa pun Anda akrab dengan, saya bisa benar-benar membuat program menggunakan bahkan sederhana ini editor teks. Jadi biarkan aku melakukan itu. Biarkan aku pergi ke depan dan menyimpan ini mengajukan pertama sebagai hello.c. Dan lagi, user interface akan menjadi akrab bagi Anda dengan cepat. Tetapi untuk sekarang, aku hanya mengetik dalam nama file. Aku akan menyimpannya ke John saya Direktori home Harvard. Dan sekarang saya memiliki tab ini yang menunjukkan Saya memang mengedit file bernama hello.c. Jadi tidak terlalu menarik namun. Dan sekarang itu akan mendapatkan cukup samar. Aku akan memperbesar, hanya jadi lebih terlihat. Dan aku akan mulai mengetik termasuk stdio.h, int main, batal, buka keriting penjepit, satu, dua, tiga, empat ruang indentasi, mencetak f, untuk cetak sesuatu yang diformat, kutipan tanda kutip, "Halo, dunia" backslash, n, dekat kutipan, kurung tertutup, titik koma, masukkan backspace, backspace, backspace, backspace, ditutup keriting brace - Saya telah diprogram. Baiklah jadi ini adalah super sederhana Program, benar-benar, program yang siapa pun dimulai dengan pemrograman. Dan semua hal ini, untuk segala kompleksitasnya, adalah mencetak pada layar, coba tebak? Halo dunia. Tapi itu tidak cukup hanya untuk menulis program. Jadi ini adalah kode. Ini adalah kode sumber dalam bahasa yang disebut c. Ini disimpan saat ini file bernama hello.c. Sekarang lihat di bagian bawah dari layar di sini. Lebih lanjut tentang ini, sekali lagi, di minggu-minggu yang akan datang. Tapi ini adalah apa yang akan kita sebut jendela terminal. Ini adalah berkedip, hitam dan prompt putih. Ini semacam sebuah antarmuka sekolah tua untuk komputer yang umumnya tidak menggunakan mouse atau lainnya elemen grafis. Itu hanya menggunakan keyboard Anda. Dan saya dapat mengetikkan perintah pada ini berkedip cepat. Dan untuk tujuan hari ini, aku hanya akan ketik berikut - membuat halo. Dan program, buat, hanya program itu, di dunia nyata ini hari, kita akan klik dua kali pada. Tapi dalam interface ini untuk hari ini, kami akan mengetik namanya pada prompt ini. membuat halo secara harfiah akan membuat saya sebuah program yang disebut halo. Dan itu akan melakukannya dengan melihat untuk file, hanya dengan default, yang disebut hello.c. Ini akan menganggap saya ingin program C oleh sifat bagaimana komputer ini dikonfigurasi. Jadi aku pergi ke depan dan tekan enter. Saya melihat beberapa output samar, tetapi ini akan menjadi terlalu familiar lama. Hal ini terjadi untuk menjalankan compiler, lebih pada suatu saat, yang disebut dentang. Tapi sekarang, aku punya hanyalah berkedip meminta. Dan aku bisa pergi ke depan sekarang dan ketik dot slash, untuk alasan menarik kita akan kembali ke minggu depan - halo. Jadi semua upaya ini sejauh ini hanya untuk menulis sederhana program itu, segera setelah saya tekan Enter, apakah itu. Jadi saya telah menulis program pertama saya. Jadi aku sengaja menusuk menyenangkan pada program ini sangat sederhana untuk beberapa alasan. Satu, sulit untuk mendapatkan bersemangat tentang mengambil kelas jika ini adalah akhir permainan. Tapi lebih dari itu, ada banyak gangguan di sini. Pertama kali Anda belajar program, untuk Bagi Anda kurang nyaman, dan bahkan aku, kembali pada hari, ketika saya pertama kali melihat sesuatu seperti ini - Anda dapat jenis dari angka tersebut, baiklah, ini adalah di cetak hello world. Tapi ada begitu banyak gangguan. Ada begitu banyak sintaks pada layar yang mendapat di jalan sangat sederhana, jika sederhana, ide. Jadi apa yang akan kita lakukan hari ini adalah kita akan mengesampingkan C dan datang kembali ke Senin. Dan kita akan menggunakan grafis bahasa pemrograman yang disebut Scratch. Ini adalah bahasa pemrograman, yang saya disinggung pada hari Rabu, itu akan untuk memungkinkan kita untuk melakukan hal-hal yang sama tapi menutup mata, untuk hari ini, dengan kurung kurawal, tanda kurung, titik koma, dan semua ini bodoh gangguan yang mendapatkan di jalan, di ini hari pertama, beberapa dasar, cukup ide-ide menarik. Jadi untuk mencapai tujuan itu, aku akan pergi kembali ke desktop saya ke sini dan memperkenalkan Anda ke alternatif yang Program, yang akan terlihat sedikit sesuatu cahaya ini. Itulah cara kita akan mengimplementasikan program yang sama hari ini - dua puzzle potongan, ketika saling bertautan dan diklik, akan mengatakan kepada dunia, hello world. Jadi mari kita benar-benar pergi ke sana. Jadi aku akan pergi ke depan dan membuka situs yang dikenal sebagai scratch.mit.edu. Dan ini akan menyebabkan saya untuk situs ini di sini. Di muka, saya sudah masuk ke ini website dan masalah pertama yang akan memandu Anda melalui beberapa langkah-langkah ini. Aku akan pergi ke depan dan klik pada folder awal saya di sini. Dan ini akan menunjukkan beberapa proyek yang saya sudah sebenarnya diciptakan di muka. Dan ternyata grafis ini bahasa pemrograman tidak hanya akan untuk memberitahu kami program dengan menyeret dan menjatuhkan potongan-potongan teka-teki, Anda bahkan tidak perlu software khusus. Ini semua tertanam dalam browser sehingga yang dapat Anda lakukan ini, dalam teori, pada komputer Anda sekarang, karena beberapa dari Anda mungkin saja, bahkan tanpa perlu software seperti CS50 alat, yang akan datang minggu depan. Jadi aku akan pergi ke sudut atas di sini dan klik Create. Dan dalam sekejap aku akan mendapatkan kosong layar melalui mana saya bisa mulai pemrograman grafis ini lingkungan pemrograman. Tapi kali ini, itu akan menjadi jauh, jauh lebih mudah untuk benar-benar melakukannya. Jadi hanya dalam beberapa saat, ketika Wi-Fi bekerja sama, kita sekarang memiliki layar ini. Jadi tur verbal cepat, tapi saya berani mengatakan, tentu ketika Anda menyelam ke dalam Masalah pertama set, Anda akan menemukan ini semua sangat diakses dan cukup intuitif. Tapi mari kita melukis gambaran mental untuk sesaat. Jadi di bawah ini cepat save mengatakan perubahan, Anda akan melihat awal. Ini adalah sprite. Ini karakter. Dan dia tinggal di apa yang akan kita sebut panggung, ini persegi panjang putih besar di yang ia dapat bergerak ke atas, bawah, kiri, kanan, dan lakukan, benar-benar, jenis tindakan. Sementara itu, di tengah-tengah pengguna ini antarmuka, kami memiliki sejumlah besar potongan puzzle. Dan Anda akan melihat bahwa mereka mengatakan hal-hal seperti bergerak 10 langkah, berbalik 15 derajat, titik dalam arah tertentu. Tapi ada kategori blok di sini juga. Jadi jika saya pergi ke Looks, Anda akan melihat bahwa ada potongan puzzle lain yang tampaknya akan memberitahu cit ini menyapa, untuk berpikir, untuk menunjukkan sendiri, menyembunyikan dirinya. Jika saya pergi ke Sounds, ternyata ada cara untuk memutar suara seperti meow, untuk menghentikan semua suara, untuk memainkan drum. Jadi, singkat cerita, ada keseluruhan sekelompok potongan puzzle yang memungkinkan Anda untuk memberitahu kucing ini, atau sejumlah karakter lain, apa yang harus dilakukan. Tetapi untuk membuat ini semua terjadi Anda perlu memulai pemrograman. Dan ini kotak besar putih, atau kotak abu-abu, pada sisi kanan, di sinilah Aku akan benar-benar menarik dan menjatuhkan potongan-potongan teka-teki. Itulah teks kosong saya window setara. Jadi aku akan pergi ke depan dan klik Kontrol di tengah. Atau lebih tepatnya, aku mulai Acara bawah. Dalam Acara bangku, Anda akan melihat beberapa hal yang sengaja melengkung di atas sedemikian rupa sehingga mereka mungkin tidak berpaut pada atas potongan puzzle. Dan itu karena mereka Demark awal dari sebuah program, mulai dari skrip, sehingga untuk berbicara. Jadi jika saya pergi ke depan dan tarik, ketika hijau bendera diklik di sini, dan kemudian aku ingin kucing ini mengatakan sesuatu pada awalnya. Jadi aku akan pergi di bawah tampak panel. Dan aku akan pergi ke depan dan ambil menyapa blok, dan drag, dan drop, dan melepaskan sehingga secara otomatis interlocks ada. Dan kemudian melihat saya bisa klik pada teks. Dan aku bisa menimpa untuk menjadi lebih spesifik seperti, katakanlah, hello world. Dan sekarang kita memiliki program yang saya klaim adalah setara dengan yang jauh lebih Program misterius saya menerapkan di C beberapa saat yang lalu. Jika aku pergi sekarang ke sisi kiri, melihat ada tanda berhenti besar dan bendera hijau besar. Biarkan aku memperbesar untuk kejelasan. Dan ketika saya sekarang klik bendera hijau, Anda mungkin bisa menebak apa yang pertama ini Program ini sekarang akan dilakukan. Jadi, juga, kita pemrograman, tetapi kita tidak benar-benar macet di beberapa dari mereka sintaksis, rincian menit. Tapi mari kita mencoba sesuatu yang sedikit lebih menarik. Biarkan aku pergi ke folder Scratch saya di sini. Dan sebenarnya, biarkan aku jadi izinkan saya membuka program terpisah sini untuk hanya saat, Maksimalkan jendela ini, Berkas Terbuka, dan aku akan pergi ke hari ini direktori source. Seperti biasa, Anda akan menemukan, hari ini dan dan seterusnya, bahwa semua contoh saat ini dapat diakses dalam website kursus itu. Dan aku akan pergi ke depan di sini dan memilih up sedikit sesuatu yang berbeda. Yang ini, yang Aku butuh sukarelawan. Siapa yang mau lampu meja hari ini? OK, bagaimana tentang seseorang sedikit - kamu pada akhirnya? Ayo turun. Sekarang, Anda ingin berpartisipasi, atau hanya mengatakan mulai dengan lampu meja? VANESSA: [Tak terdengar]. DAVID Malan: OK. Luar biasa, apa nama Anda? Vanessa? David. Senang bertemu Anda. Jadi datang ke atas dan Vanessa akan untuk mengambil kendali dari saya Keyboard untuk sesaat. Dan apa yang saya lakukan di sini, hanya untuk waktu yang kepentingan, seperti yang telah saya menyadari Wi-Fi adalah agak lambat, Scratch, yang pemrograman lingkungan bahwa kita menggunakan, juga dapat didownload dan berjalan pada komputer lokal Anda. Jadi apa yang saya lakukan di muka kuliah, di kasus yang terjadi, adalah saya download semua file kita akan bermain dengan sehingga mereka dapat menjalankan sedikit lebih cepat di sini di laptop saya. Jadi itu sebabnya sekarang aku melihat interface Mac-spesifik. Jadi aku akan pergi ke depan dan membuka satu ini. Aku akan pergi ke depan sekarang dan layar penuh jendela. Dan seperti yang Anda akan melihat, kita bisa sangat cepat, sebagai mahasiswa ini melakukan, salah satu pendahulu Anda, pergi dari hello world untuk yang jauh lebih menarik aplikasi. Jadi di sini adalah instruksi. Oh, dan kami memiliki satu hal lainnya. Saya pikir akan menyenangkan, karena, biasanya, kita akan syuting kamera dengan cara ini. Saya pikir akan menyenangkan jika, Vanessa, kita bisa melihat dunia melalui mata Anda. Jadi di sini kita memiliki beberapa Google Glass. [HERAN Terengah] DAVID Malan: Kami hanya akan memberikan pergi lampu meja hari ini. [Tertawa] Jadi biarkan aku isyarat ini. Baiklah, jadi menyentuh ini. OK, Kaca, merekam video. Baiklah, Vanessa? Sekarang, sebagai samping yang telah mendapat apa-apa hubungannya dengan Scratch, jika Anda melihat sedikit naik dan ke kanan, Anda akan melihat kaca literal, dan Anda harus melihat jendela persegi panjang kecil. Anda harus melihat semua teman sekelas Anda difilmkan sekarang? Ya. VANESSA: Ya. DAVID Malan: OK. Jadi itu bagus. Kami akan merilis rekaman ini nanti. Untuk saat ini, mengalihkan perhatian Anda ke layar di sini. Dan apa pendahulu Anda telah dilakukan adalah menaruh beberapa instruksi pada layar hanya dengan menggunakan program cat. Jadi Anda akan, dalam beberapa saat, tekan spasi untuk memulai. Dan kemudian beberapa potongan puzzle akan untuk mulai bergerak naik layar. Dan Anda ingin memukul tombol panah, hanya seperti secara real DDR, sesuai dengan hal-hal berbaris dengan mereka panah. VANESSA: OK. DAVID Malan: Anda telah memainkan ini sebelumnya. VANESSA: Ya. DAVID Malan: Baiklah, Vanessa, pergi ke depan dan membawanya pergi. [MUSIC - Kayne Barat, "KUAT"] [Tepuk Tangan] DAVID Malan: Jadi mari kita sekarang mengambil langkah dari itu. Jadi jelas, itulah akhir permainan. Pertandingan berakhir tidak hello world. Tapi Anda tidak harus selalu dilakukan hal-hal yang sangat interaktif. Anda juga dapat melakukan animasi. Jadi misalnya, satu lagi dari Anda penerus membuat program ini di sini, yang menceritakan sebuah cerita lebih dari itu tidak dilaksanakan permainan. Jadi biarkan aku pergi ke depan dan membuka sini Program dalam direktori sumber yang sama kami dari hari ini. Ini satu panggilan, dan mari kita mulai dengan, kisah cinta kue. Dan bukan untuk membuat ini terlalu akademis, namun, ketika Anda menonton satu ini, pikirkan untuk sendiri mana yang sederhana konsep pemrograman kita sudah bicara tentang sejauh - variabel, dan loop, dan kondisi, tidak pendahulu Anda mungkin menggunakan hanya untuk melaksanakan beberapa visualisasi. Anda lihat di sini. Jadi saya memberikan Sebuah cerita cinta kue. [MUSIC - GREEN DAY, "HOLIDAY"] [CRASH] [MUSIC - THE TURTLES, "SELAMAT BERSAMA"] DAVID Malan: Baiklah, jadi ada, kami memiliki sebuah kisah cinta kue. Tapi bahkan di sana - [Tepuk Tangan] DAVID Malan: Baiklah, bahkan di sana, pikirkan, seperti yang pergi dari hati bagian bawah ke atas layar, sebenarnya ada sedikit keacakan terjadi. Dan memang, kita akan melihat bahwa bahkan di sederhana lingkungan, seperti Scratch, seperti di C, Anda dapat menghasilkan nomor acak, atau ilusi angka acak, sehingga permainan adalah sedikit lebih menarik daripada itu mungkin jika Anda telah benar-benar keras kode segalanya. Dalam gerakan yang Anda lihat, ada ada beberapa jenis respon. Segera setelah gingerbread man menyentuh wanita jahe, dia tampaknya menjauh. Dan, memang, Anda dapat menerapkan, di bahasa pemrograman yang paling, gagasan peristiwa, dimana jika sentuhan tangan sisi lain, yang dapat memicu beberapa kode sumber ke benar-benar melaksanakan. Anda dapat mendengarkan untuk seperti hal di layar. Jadi mari kita tur singkat, kemudian, beberapa blok bangunan kita dapat menggunakan untuk mencapai beberapa tujuan ini. Jadi, inilah yang kita akan selanjutnya sebut sebuah pernyataan. Sebuah pernyataan kebetulan ungu Scratch, sedikit sesuatu seperti ini, tapi itu sewenang-wenang. Pernyataan adalah hanya sepotong teka-teki atau, lebih umum, instruksi, yang memberitahu komputer untuk melakukan sesuatu, sebuah pernyataan. Jadi, inilah contoh sederhana. Menyapa dunia. Satu lagi mungkin menunggu satu detik. Jadi teka-teki ini bagian, yang didukung di Scratch, kami akan memberitahu Anda karakter jeda selama beberapa jumlah detik. Ini juga, hanya sebuah pernyataan. Disini berikutnya, kita memiliki lain lebih menarik satu, bermain suara meong, dan panah kecil berarti bahwa dalam Scratch, ini adalah menu drop down. Sehingga Anda dapat mengimpor suara. Anda dapat merekam suara dan melakukan lain hal menyenangkan di Scratch. Dan itu juga, meskipun, pada akhir hari, hanya sebuah pernyataan. Tapi sekarang mari kita memperkenalkan lebih bagian yang menarik, yang dikenal sebagai Ekspresi Boolean. Modal B, dinamai seorang rekan bernama Bool. Dan ekspresi Boolean hanya potongan puzzle atau, lebih umum, bagian dari informasi yang benar atau salah - satu atau nol, ya atau tidak. Jadi itu hanya salah satu dari mereka dua hal yang bertentangan. Jadi salah satu ekspresi Boolean seperti di dunia Scratch terlihat seperti ini biru teka-teki potongan. Dan itu mengajukan pertanyaan, mouse bawah, dan yang dapat menjadi, dari Tentu saja, benar atau salah. Jadi dengan teka-teki ini bagian dalam Scratch, baik, Anda akan dapat mendeteksi jika teka-teki jika mouse, pada kenyataannya, menjadi ditekan oleh interaksi manusia dengan program anda. Yang ini sedikit lebih abstrak, tetapi mereka dua kotak putih hanya untuk nomor. Sehingga Anda dapat melakukan hal-hal seperti ini adalah jumlah kurang dari yang lain? Dan jika demikian, Scratch akan berperilaku salah satu cara atau yang lain. Yang ini sedikit lebih grafis. Ini jika sprite, jika kucing, untuk Misalnya, sebenarnya menyentuh pointer mouse. Jadi jika panah kepala sedikit yang melayang lebih dari kucing, maka ini potongan puzzle akan mengevaluasi dengan benar. Ini akan menjadi kenyataan, dalam hal ini, jika Anda menggunakan ekspresi Boolean, seperti yang kita akan lihat sebentar, di cabang, Anda dapat baik melakukan hal ini, atau Anda bisa melakukan itu, banyak seperti kami memiliki kondisi yang diperiksa, apakah ada satu orang lagi lalu dalam ruangan? Jika demikian, menambahkan satu. Jika tidak, jangan khawatir lanjut. Jadi ekspresi Boolean juga bisa dan-ed bersama-sama atau atau ed bersama-sama. Sehingga Anda dapat menggabungkan ekspresi Boolean dan mengatakan ini dan ini harus benar untuk seluruh hal untuk menjadi kenyataan. Dan di sini adalah contoh dunia yang lebih nyata. Jika Anda telah menggunakan CS50 Kursus untuk melakukan kursus belanja, kotak-kotak centang sana, di mana jika Anda memeriksa kotak yang berikutnya program, yang akan mengatakan, ya, hanya menunjukkan program yang nilai Q adalah 4.5 atau lebih tinggi. Jika Anda hapus centang, tidak, jangan khawatir tentang itu. Atau sama, di sebelah kanan, Apakah tidak Konflik Dengan Program Aku Mengambil, itu benar atau salah. Ini hanya ekspresi Boolean. Jadi selama ini ketika Anda sudah digunakan website dengan kotak centang, Anda hanya Toggling setara dengan Boolean ekspresi dan mematikan. Jadi dalam bentuk apa yang Anda gunakan ini? Nah, dalam Scratch, kita akan lihat sebentar lagi bahwa ada kondisi yang terlihat seperti ini. Dan itu agak masuk akal karena banyak seperti pada pseudocode, kami menjorok jenis potongan puzzle berbentuk U, berarti bahwa apa pun dalam U yang akan mengeksekusi, atau tidak, tergantung di mana itu. Jadi jika ekspresi Boolean, maka apapun yang ada di dalamnya akan dieksekusi. Sementara itu, ada sebuah blok jika / lain. Jadi jika Anda ingin cabang yang berjalan ini cara atau itu, Scratch memberi kita itu. Dan dengan logika ini, sekarang, meskipun itu potongan puzzle jelas terlalu kecil irisan sesuatu yang lain di dalamnya, potongan-potongan teka-teki awal, mereka hanya akan tumbuh. Ketika Anda drag dan drop atas sesuatu, itu hanya akan tumbuh sesuai apa pun adalah Anda coba lakukan. Jadi kita bisa mengambil dua dari hal-hal ini dan membuat garpu cara tiga jalan sehingga bahwa baik Anda melakukan ini, atau itu, atau hal lainnya hanya dengan bersarang mereka dengan cara itu. Tentu saja, jika Anda melakukannya juga banyak, mulai mendapatkan jelek. Tapi pada saat itu, Anda benar-benar mungkin tidak pemrograman sangat baik. Dan sehingga akan berulang tema, juga, bahwa gaya. Hanya seberapa baik sebenarnya memformat kode Anda? Atau seberapa baik Anda merancang kode Anda? Tapi lebih pada bahwa di masa depan. Dan sekarang kami memiliki loop. Ada lingkaran selamanya bagus di Scratch yang secara harfiah berarti - melakukan apa pun dalam hal ini lagi, dan lagi, dan lagi. Anda bisa menjadi lebih konkret dan berkata, melakukan hal berikut 10 kali. Anda juga dapat menggunakan variabel. Anda bisa datang dengan nama apapun dalam sedikit drop-down dan berkata, beri saya variabel yang disebut n dan mengatur itu sama untuk beberapa nilai. Dan kemudian Anda dapat memiliki fungsi. Tapi lebih pada orang-orang hanya dalam beberapa saat. Biarkan aku kembali ke saya Gores antarmuka. Dan biarkan aku pergi ke depan saat ini. Dan mari kita pergi ke depan dan membuka, katakanlah, sebuah contoh dari - yang sedikit lebih menarik. Biarkan aku pergi ke depan, dan, sebenarnya, biarkan aku hanya membuat sendiri. Saya tidak perlu membuka satu ini. Biarkan aku pergi ke File, New. Aku akan pergi ke acara. Aku akan pergi ke ketika bendera hijau diklik, dan aku akan pergi ke Suara. Dan aku akan drag dan drop ini potongan puzzle, bermain meong suara. Ini kait bersama-sama. Dan sekarang, jika saya klik bendera hijau - [MEOW SUARA] DAVID Malan: Adorable. OK, jadi sekarang mari kita lakukan sesuatu yang sedikit lebih logis hanya untuk menunjukkan bahwa kita bisa, untuk saat ini. Aku akan membuka pasak ini dari orang itu. Aku akan pergi ke Control. Dan aku akan ambil kondisi. Jadi jika sesuatu maka. Jadi itulah bagaimana tampilannya di sana. Jadi aku butuh ekspresi Boolean. Dan biarkan aku pergi ke depan dan berkata, biarkan aku pergi ke Operator. Aku akan melakukan sesuatu yang sedikit mathy, hanya untuk iseng. Aku akan pergi di sini dan mengatakan, jika sesuatu yang kurang dari sesuatu yang lain, pergi ke depan dan melakukan sesuatu. Jadi sekarang, Anda tahu apa, blok acak. Jadi perhatikan bagaimana, jika saya membawa lebih dari ini hal di sini, yang akan patah sana. Jadi sekarang, pemberitahuan, aku mulai melakukan sesuatu yang sudah lebih logis menarik. Jika nomor acak antara 1 dan 10 kurang dari, katakanlah enam. Jika saya memilih enam, yang pada dasarnya berarti, lakukan langkah berikut dengan 50% probabilitas. Ini seperti membalik koin. Sekarang, aku bisa melakukan sesuatu kondisional. Dan itu sesuatu yang aku akan lakukan adalah memutar suara. Jadi sekarang, ketika saya klik pada layar bendera, itu seperti melempar koin. [MEOW SUARA] DAVID Malan: Itu kepala atau entah apa lagi di sana. Mari kita lakukan lagi. [MEOW SUARA] DAVID Malan: Heads lagi. [MEOW SUARA] DAVID Malan: Heads lagi. Fiuh, OK. Ekor waktu itu. Jadi 50% dari waktu, jika kita melakukan ini panjang tak terhingga, kita akan mendapatkan 50% meows dan membungkam 50%. Jadi, hanya bangunan dasar blok yang memungkinkan kita melakukan itu. Tapi ini adalah jenis membosankan yang saya miliki terus klik tombol itu. Jadi mari kita hanya drag dan melemparkan semua orang pergi. Jika Anda menyeret mereka ke tengah, mereka hanya akan menghapus sendiri. Biarkan aku pergi untuk mengontrol. Biarkan aku pergi selamanya. Dan kali ini, saya akan melakukan sesuatu minorly menjengkelkan. [Tertawa] DAVID Malan: Dan biarkan aku pergi depan dan melakukan kontrol. Tunggu satu detik, hanya begitu itu tidak terlalu kisi. [MEOW SUARA] DAVID Malan: Itu tidak wajar. OK. [MEOW SUARA] DAVID Malan: Dan perhatikan apa, bagus tentang Scratch, bagi anda yang memiliki pengalaman sebelumnya programing, Anda tidak perlu untuk memulai dan menghentikan. Anda tidak perlu untuk mengkompilasi. Anda hanya mengubahnya, dan program akan beradaptasi secara dinamis. Jadi, ini adalah mendapatkan kecil yang menarik. Tapi mari kita mengambil satu langkah lebih jauh. Biarkan aku pergi ke depan dan mendapatkan Singkirkan program itu. [MEOW SUARA] DAVID Malan: Itulah yang kita akan sebut bug di Scratch. Dia seharusnya tidak terus membuat suara itu. Jadi kita kita akan menyuruhnya berhenti. Baiklah, jadi sekarang aku akan pergi ke - Aku akan membiarkan MIT tahu. Kita akan pergi ke sini untuk Selamanya. Dan sekarang, saya ingin melakukan sesuatu lagi dan lagi. Aku akan pergi ke Control. Dan mari kita lihat, aku akan menyeret saya jika kondisi di sana. Jadi sekarang melihat logika. Ketika bendera hijau diklik, lakukan sesuatu yang selamanya, tetapi hanya melakukan itu sesuatu jika hal ini lainnya adalah benar. Aku akan pergi ke, mari kita mengatakan, penginderaan. Dan aku akan pergi ke depan dan memilih menyentuh dan jatuhkan di sana. Itulah ekspresi Boolean. Dan sekarang, perhatikan, dalam daftar ini down menu, ada beberapa nilai yang telah ditetapkan. Jadi bisa saya katakan, kau menyentuh tepi layar? Atau apakah Anda menyentuh pointer mouse, panah di layar? Jadi aku akan melakukan itu. Dan jika demikian, maka aku akan pergi depan dan bermain meong suara. Jadi sekarang aku jenis memiliki awal dari permainan - permainan menggemaskan. [MEOW SUARA] DAVID Malan: OK, menggemaskan, permainan kereta. Biarkan saya menunggu, katakanlah, satu detik di sana. Sekarang bermain lagi, dengan mengklik bendera hijau. [MEOW SUARA] DAVID Malan: Jadi sekarang seperti membelai kucing. [MEOW SUARA] DAVID Malan: Baiklah, sekarang ini salah Aku memang membuat terlebih dahulu. Sangat terlambat, mendapat semacam mudah untuk melakukan hal-hal bodoh. Jadi biarkan aku pergi di sini. Katakanlah, yang Pet Cat. Mari kita sekarang buka Jangan Pet Cat. Sekarang, jika kami bermain satu ini, Anda bisa menebak, jika Anda melihat layar - [MEOW SUARA] DAVID Malan: Sekarang, jika saya pet kucing [LION'S ROAR] DAVID Malan: Jadi tidak benar-benar pet kucing dalam kasus itu. Jadi sekarang kita hanya memiliki contoh dari cabang yang akan dalam dua arah. Sekarang biarkan aku pergi ke depan dan membuka satu lagi di sini. Yang satu ini, juga, antara sumber kami file kode untuk hari. Jadi biarkan aku kembali ke Sumber saya direktori dan masuk ke dalam, mari kita pilih orang ini di sini dan melihat apa yang berbeda. Wow, semua yang benar, jadi sekarang itu semakin sedikit lebih kompleks. Dan sebelum kita melihat apa yang orang ini tidak, mari kita coba untuk menyimpulkan, dari program di sisi kanan. Dan sekarang awal jelas memungkinkan kita untuk memiliki beberapa script, beberapa program yang terkait dengan satu sprite, dengan satu karakter, dan, tampaknya, mereka berdua akan berjalan berbaris. Karena kedua program ini dimulai dengan ketika hijau bendera klik, ini mengisyaratkan pada topik yang lebih maju, dengan yang beberapa dari Anda mungkin akrab, dikenal sebagai threading, atau multi-threading. Ternyata, cerita panjang pendek, komputer hari ini pada dasarnya dapat melakukan beberapa hal sekaligus. Atau mereka bisa melakukan satu hal pada suatu waktu sehingga cepat sehingga Anda bahkan tidak menyadari bahwa itu benar-benar melakukan satu hal pada suatu waktu. Tapi untuk saat ini, mari kita asumsikan bahwa kedua program ini akan mengeksekusi waktu yang sama. Dan perhatikan, keduanya memiliki selamanya teka-teki potongan. Jadi mereka berdua akan tetap berjalan sampai aku memukul tanda berhenti merah. Jadi apa yang akan mereka lakukan? Di sisi kiri, aku rupanya mendeklarasikan variabel disebut diredam. Jadi saya tidak menyebutnya sesuatu seperti membosankan seperti N. Aku menyebutnya diredam ini waktu untuk menyampaikan makna. Aku mengaturnya sama dengan nol. Mari kita menganggap hal itu sebagai palsu, atau mari kita berpikir bahwa sebagai False. Sekarang, selamanya lakukan hal berikut. Jika spasi keyboard yang ditekan, kemudian jika diredam sama dengan nol, kemudian mengubah diredam untuk sama dengan satu. Lain, mengatur diredam ke nol. Jadi secara logis, meskipun itu secara keseluruhan sekelompok potongan puzzle yang hanya mengatakan, ketika saya menekan Space bar, apa yang harus saya lakukan untuk variabel disebut diredam? Mengubahnya dari satu sampai nol, atau nol sampai satu. Itu saja. Jadi seperti menyalakan tombol lampu on atau off dan mengingat, dengan variabel, bahwa saya telah melakukan itu. Sementara itu, di sisi kanan, di istilah awam, apa tujuan dari script di sebelah kanan? SISWA: Untuk memutar suara singa laut. DAVID Malan: Untuk memutar Sea Lion suara, jika ia tidak diredam, oleh sifat variabel tersebut. Jadi kita berbagi negara, sehingga untuk berbicara, berbagi informasi di kedua script karena, perhatikan di sini, kita selamanya melakukan hal berikut. Jika diredam adalah nol, jadi jika tidak diredam - jika diredam adalah palsu, kemudian bermain Singa ini suara Laut. Dan berpikir untuk diri sendiri, hi, hi, hi, untuk dua detik, tunggu sebentar, dan kemudian periksa lagi. Jadi, jika kita pergi sekarang ke sini ke kiri, ke mana orang ini, dan tekan bendera hijau, [SEA LION SUARA] DAVID Malan: Pada titik tidak ini bisa benar-benar menjengkelkan? Karena hal ini hanya akan berlangsung selamanya. Jadi kadang-kadang, loop tak terbatas, sehingga untuk berbicara, yang disengaja. Tapi dalam kasus ini, segera setelah saya hit Space bar, ia berhenti. Sekarang program ini belum berhenti. Ini masih berjalan dalam loop. Tetapi jika saya mendapatkan spasi lagi - [SEA LION SUARA] DAVID Malan: Dia akan memilih up di mana ia tinggalkan. Jadi ada satu cara bagi kita untuk melakukan sesuatu lagi dan lagi tapi, itu waktu, hanya kondisional. Nah, sementara kita berada di vena ini melakukan hal lagi dan lagi, biarkan aku masuk ke contoh lain lagi di sini. Yang satu ini kita sebut menghitung domba. Dan perhatikan apa orang ini tidak. Ini sebenarnya sedikit lebih seperti pseudocode kami bermain dengan on Rabu, dimana ia menetapkan beberapa counter, berpikir itu adalah sebagai N lagi, untuk nol, ia selamanya melakukan berikut ini. Dia mengatakan nilai counter untuk satu kedua, menunggu kedua, dan kemudian perubahan counter per satu. Dan dalam konteks ini, yang baru saja berarti kenaikan itu. Jadi dia menambahkan satu untuk itu. Jadi ini benar - itu tidak cukup apa yang kita pikirkan sebagai menghitung domba. Ini domba melakukan penghitungan, selamanya, naik dari nol. Jadi kita bisa melakukan hal yang serupa ada, secara logis. Tapi sekarang mari kita coba untuk membersihkan beberapa hal-hal ini. Biarkan aku pergi ke depan sekarang menjadi sederhana contoh di mana kucing kami hanya akan mulai batuk. Baiklah, jadi di sini kita memiliki batuk 0 - ilmuwan komputer mulai menghitung dari 0. Jadi kucing ini hanya akan batuk tiga kali. Dan inilah cara saya menerapkan itu. Ketika bendera hijau diklik, batuk, tunggu, batuk, tunggu, batuk, tunggu. Dan aku melakukan ini hanya dengan menyeret dan menjatuhkan potongan puzzle. Atau jika Anda mulai bermain-main dengan Scratch, Anda akan melihat Anda dapat benar-benar menduplikasi potongan sehingga Anda dapat melakukan hal yang lebih cepat tanpa menyeret dan menjatuhkan nauseum iklan. Tapi kami tidak di jalan terbaik di sini. Karena bagaimana cara membuatnya batuk keempat kalinya? Yah, aku bisa semacam turun di sini. Aku bisa menduplikasi dan kemudian paste ini di sana. Bagaimana cara membuatnya batuk kelima kalinya? Nah, copy dan paste lagi. Atau tarik turun lagi. Dan sangat cepat, program ini dimulai untuk benar-benar, benar-benar berlebihan, sangat panjang, tapi benar-benar menarik. Tapi ada cara untuk membersihkan ini. Apa cara yang jelas untuk membersihkan ini? OK, jadi kita bisa benar-benar benar-benar pergi keluar dan, ketika anda menekan ruang bar, memiliki dia batuk. Tetapi jika saya hanya ingin melakukan sesuatu berulang-ulang, mengingat bahwa kita memiliki beberapa kontrol konstruksi. Mari saya memindahkan keluar dari cara, pergi di bawah kontrol. Biarkan aku hanya melakukan mengulang, mengatakan, tiga kali. Dan sekarang biarkan aku mencuri beberapa potongan-potongan teka-teki. Biarkan aku jepret ini disini. Mari saya melemparkan ini pergi sama sekali. Dan sekarang, aku punya lebih baik program yang dirancang. Kenapa? Jika saya ingin mengubah jumlah kali kucing ini batuk, semua saya harus lakukan adalah mengubah satu variabel, atau satu nilai, lebih dari tiga, sampai empat, atau lima, atau enam. Atau aku bisa melakukan sesuatu kondisional, Bahkan, dengan ruang bar jika saya ingin. Jadi ini adalah prinsip umum. Setelah Anda mulai menyalin dan menyisipkan kode, apakah itu dalam Scratch, atau C, Anda sedang melakukan sesuatu salah, kemungkinan besar. Atau setidaknya, setelah Anda melebihi beberapa jumlah memadai salinan dan pasta, Anda mungkin melakukan sesuatu yang salah. Tapi kau tahu apa? Aku benar-benar tidak seperti ini. Ini bukan desain terbersih. Saya berharap ada sepotong puzzle yang disebut batuk karena saya tidak akan harus melaksanakan ini sendiri, dengan cara lama, dengan setelah berkata, dan menunggu - bagaimana jika mereka hanya sepotong puzzle batuk. Yah, aku benar-benar bisa melakukan itu. Biarkan aku pergi di bawah blok lagi, klik Membuat Blok, dan sekarang saya mendapatkan ini window sini. Aku akan menelepon hal ini batuk. Aku akan pergi ke depan dan klik OK. Dan sekarang perhatikan, saya mendapatkan awal baru sepotong yang melengkung di atas. Dan apa yang akan saya lakukan dengan ini, saya akan hanya mencuri blok ini. Aku akan menempatkan mereka di sini. Dan sekarang, dengan tiga potong, aku sudah dilaksanakan apa yang saya akan memanggil fungsi, atau prosedur, atau beberapa Anda mungkin tahu itu sebagai sebuah metode. Sedikit perbedaan antara kata-kata. Tapi untuk saat ini, mari kita menyebutnya fungsi. Ini hanya sepotong teka-teki baru. Sekarang ini diterapkan seperti ini. Tapi perhatikan bahwa Scratch telah memberi kita representasi fisik yang utuh blok di sini. Jadi sekarang, saya hanya dapat menarik ini di sini, mengatakan, ulangi tiga kali, dan apa yang akan terjadi sekarang, ketika saya bermain script ini, hanya satu program berjalan pada suatu waktu. Hanya ada satu ketika bendera hijau diklik. Tapi itu blok ungu disebut batuk efektif memberitahu Scratch, setiap kali Anda melihat bahwa potongan puzzle, sebenarnya mengeksekusi langkah-langkah yang saya terjadi untuk melaksanakan secara manual. Jadi itu agak rapi. Tapi sekarang, anggaplah bahwa saya memutuskan, saya tidak ingin kucing ini hanya untuk batuk. Aku ingin dia bisa bersin juga. Nah, bagaimana kita bisa pergi tentang menerapkan bersin? Yah aku bisa cukup banyak melakukan hal yang sama. Aku bisa membuat blok lain. Aku bisa menelepon bersin ini, klik OK. Kemudian, di sini aku bisa benar-benar telah, biarkan aku menduplikasi - dan ada di mana Anda harus merasa seperti Anda mungkin tidak melakukan sesuatu dalam cara terbaik. Aku bisa mengatakan sesuatu seperti, Achoo, untuk satu detik. Tunggu satu detik. Sekarang saya memiliki blok baru yang disebut bersin. Dan memang, ada itu. Tapi ini juga harus mulai merasa - mungkin bukan minggu pertama kelas, tetapi oleh kedua - hanya sedikit berlebihan. Jelas, ada beberapa redundansi sini. Jadi biarkan saya mengusulkan, sebaliknya, bahwa kita memperbaiki definisi ini sebagai berikut. Biarkan aku pergi ke menu file saya. Aku tidak akan menyimpan versi ini. Aku akan pergi ke salah satu file premade saya di sini. Dan aku akan pergi ke depan dan membuka batuk 2. Whoops itu batuk 2. Biarkan aku pergi ke depan dan membuka batuk 3, yang merupakan direktori ini sumber. Batuk 3 dan perhatikan - oh, saya mengatakan cerita dalam urutan yang salah. Mari saya pulih dari cerita ini. Cerita Aku dimaksudkan untuk memberitahu berakhir dengan batuk 4 - ada itu. Jadi bagaimana jika saya, sebaliknya, menentukan sepotong puzzle besar yang disebut mendefinisikan, ucapkan kata n kali. Bersin hanya, tampaknya, di Scratch, Achoo. Jadi kita mengungkapkannya sebagai sebuah kata, hanya karena itulah kendala program. Dan batuk adalah [BATUK], tapi batuk, C-O-U-G-H. Jadi itu hanya dua kata yang berbeda lakukan, pada dasarnya, hal yang sama. Jadi saya benar-benar dapat membuat blok baru seperti ini. Saya tidak menggunakan opsi menu ini sebelumnya. Tetapi ketika Anda mengklik Membuat Blok, Anda dapat memilih beberapa pilihan. Dan Anda dapat mengatakan bahwa blok ini sebenarnya membutuhkan beberapa masukan, jika tidak dikenal sebagai argumen, atau parameter, sehingga bahwa Anda dapat memodifikasi perilaku blok Anda. Jadi apa yang saya lakukan beberapa saat yang lalu telah Aku menelepon blok ini Say. Dan kemudian aku berkata, dibutuhkan sebuah string input. Dan sekarang perhatikan, secara default, ia mengatakan String 1. String adalah hanya sebuah kata, atau frase, untuk tujuan kita. Tapi aku hanya akan menaruh beberapa placeholder teks di sana, seperti di website, ketika Anda melihat nama pengguna, atau password, dan kemudian menghilang saat Anda mulai mengetik. Itu semua itu. Dan sekarang aku akan menambahkan masukan nomor. Dan aku akan menelepon n ini - tapi itu cukup sewenang-wenang. Dan kemudian hanya label, hanya untuk membuat blok ini sedikit lebih mandiri jelas - kali, itulah yang saya lakukan. Dan hasil akhirnya adalah bahwa saya mendapatkan blok yang terlihat seperti ini. Dan sekarang perhatikan, saya menggunakan blok ulangi. Namun, bukannya keras coding tiga, aku menyeret dan menjatuhkan n di sana jadi saya dapat parametrize fungsi. Aku bisa membuat fungsi ini melakukan sesuatu nomor yang berbeda dari kali berdasarkan nilai tersebut. Dan perhatikan, mengatakan, ini adalah apa yang saya lakukan di sini, jika saya tarik kata, saya bisa mengatakan tidak keras kode kata, tapi apa pun dilewatkan untuk satu detik. Sementara itu, bagaimana cara kembali menerapkan batuk? Saya bukannya mendefinisikan batuk sebagai mengatakan batuk n kali. Jadi singkatnya, aku akan melalui ini cepat, tetapi ide dasarnya adalah segera setelah Anda mulai melihat dalam program Anda bahwa, tunggu sebentar, saya sudah melakukan sesuatu yang cukup seperti ini sebelumnya, Saya dapat beberapa faktor umum fungsi? Dapatkah saya membusuk apa yang saya lakukan ke beberapa ide dasar? Itulah yang kita lakukan di sini. Dan aku sudah ditumpuk-hal ini, visual, di atas satu sama lain karena itu bukti bahwa gagasan dimulai dengan biner, akan ASCII, membuat program grafis, semacam layering ide semakin kompleks pada atas satu sama lain. Ide yang sama di sini. Saya mulai dari Gores, menerapkan batuk, kemudian menyadari batuk adalah benar-benar hanya mengatakan sesuatu. Jadi biarkan aku bukannya melaksanakan gagasan mengatakan sesuatu. Dan di atas itu, bisa saya menerapkan Achoo, atau batuk? Dan kita bisa berbuat lebih banyak seperti varian masih. Jadi dari prinsip dasar ini, kita bisa mulai melakukan semakin program yang kompleks. Mari saya membuka satu ini. Kami benar-benar dapat memiliki beberapa sprite berinteraksi di layar sekaligus. Jika saya pergi ke direktori source saya dan ambil satu disebut Threads, ingat bahwa benang hanya benar-benar kemampuan dari dua script untuk menjalankan berdampingan sisi pada saat yang sama. Perhatikan sekarang, memiliki keduanya sprite burung dan sprite kucing, keduanya memiliki script mereka sendiri. Jadi pemberitahuan, ketika saya klik kucing, saya mendapatkan script ini. Ketika saya klik burung, Saya mendapatkan script ini. Jadi masing-masing orang memiliki program sendiri. Ketika saya sekarang klik bendera hijau, perhatikan bahwa apa program ini dilakukan adalah memiliki kucing, sangat perlahan-lahan, mengejar burung. Tapi kucing itu memiliki keuntungan memiliki telah diprogram sedemikian rupa bahwa tidak peduli di mana burung adalah, kucing berjalan ke arahnya. Kita bisa memainkan permainan yang jauh lebih cepat. Jadi jika aku di kucing, perhatikan bahwa aku menggunakan, katakanlah memindahkan satu langkah. Mari kita memiliki dia pindah lima langkah di waktu, sehingga lima titik pada suatu waktu. Biarkan aku klik bermain. [LION'S ROAR] DAVID Malan: Baiklah, sekarang kita bisa benar-benar memberikan kucing keuntungan. 10 langkah pada satu waktu. [LION'S ROAR] DAVID Malan: Baiklah, jadi sangat cepat, mendapat sedikit keuntungan untuk kucing. Tapi aku akan melambaikan tangan saya di beberapa rincian. Tapi alasan bahwa jalan yang mulai sedikit berbeda setiap kali adalah bahwa aku melakukan sedikit keacakan. Aku benar-benar menunjuk kucing dalam arah yang berbeda berdasarkan di mana saya ingin dia memulai sehingga setiap kali permainan, atau animasi, adalah sedikit berbeda. Sekarang, izinkan saya memperkenalkan satu lainnya membangun di sini. Jadi dalam hal ini, kami memiliki fungsi. Ada juga akan menjadi potongan puzzle dikenal sebagai array, atau daftar, yang memungkinkan Anda untuk menyimpan beberapa nilai-nilai dalam variabel. Kami melihat benang, dan sekarang ada Events. Jadi, inilah acara menggunakan dua orang di sini. Dan jika saya membuka file yang bernama Acara dari contoh hari ini, kami akan melihat program yang terlihat sedikit seperti ini. Dan sekarang melihat orang ini - jadi perhatikan saya memiliki biru Muppet diklik - ia hanya melakukan berikut ini. Dia tidak memiliki salah satu dari mereka hijau potongan puzzle bendera. Dia memiliki ketika saya menerima event - sehingga beberapa kata sewenang-wenang. Aku hanya mengetik acara ada - dia akan mengatakan, Polo, selama dua detik. Jadi bagi anda yang akrab dengan permainan ini mungkin tahu mana hal ini terjadi. Jika saya sekarang klik pada Muppet oranye, programnya melakukan hal ini. Selamanya, jika spasi Keyboard ditekan, ia akan berkata, Marco, selama dua detik pada layar. Tapi dia juga akan menggunakan ini pelamun memblokir dikenal sebagai siaran. Dia akan menyiarkan kutipan tanda kutip, "acara." Sementara itu, pria biru, ingat, adalah mendengarkan kutipan tanda kutip, "acara." Jadi entah bagaimana, sekarang, kita dapat memiliki dua sprite berinteraksi. Dan ketika kita sampai ke pemrograman web, kemudian dalam istilah, sama akan ini akan menguntungkan untuk memiliki website Anda melakukan sesuatu dalam menanggapi, untuk Misalnya, satu klik keyboard. Jadi biarkan aku pergi ke depan dan tekan space bar. Oranye guy bilang Marco. Biru pria mengatakan Polo. Jika saya melakukannya lagi pria oranye mengatakan Marco, biru guy mengatakan polo. Jadi mari kita satu langkah lebih jauh. Kali ini, kita akan pergi, mungkin, cuma beberapa menit di sini. Apakah kita punya - lampu meja, datang di bawah. Anda tepat di akhir. OK, Anda berdua bisa datang. Kami memiliki lampu meja untuk semua orang. Ayolah. Saya tidak tahu apakah kita dapat menjaga ini gag konyol up semua semester, meskipun. Baiklah, datang di bawah. Dan sementara itu, kita memiliki berikut contoh untuk menarik, hanya untuk mempercepat hal-hal sekarang, seperti yang kita memiliki manifestasi dari yang lain pendahulu Anda menggunakan sama blok bangunan dasar. Siapa nama Anda? JOHN: John. DAVID Malan: John. Senang kau. Dan? Setz: Setz. DAVID Malan: Setz, baik padaku Anda. John, jika Anda ingin datang up pertama, ini adalah tua permainan sekolah bernama Frogger. Anda menggunakan keyboard untuk ini juga. Dan tujuannya adalah untuk mendapatkan seluruh jalan dan air. [Frogger dan memutar musik SUARA] DAVID Malan: Maaf, tidak ada lampu meja untuk Anda hari ini. Baiklah, Setz, kan ingin datang ke atas? Baiklah, mari kita lakukan lagi. Setz: Apakah saya menggunakan panah? DAVID Malan: Hanya tombol panah. Atas, bawah, kiri, kanan. [Frogger dan memutar musik SUARA] DAVID Malan: Kami akan memanggil mereka hadiah hiburan hari ini, kemudian, sangat baik dilakukan. Di sini, bagi Anda berdua, John dan Setz. Selamat, baiklah. Jadi sekali lagi, karena permainan ini bermain, berpikir tentang apa yang terjadi? Satu, jelas ada banyak gerak. Tapi kita telah melihat bagaimana, dengan kucing dan burung contoh, bagaimana Anda dapat membuat ilusi gerak dengan hanya menggerakkan beberapa jumlah piksel lagi dan lagi. Dan jika Anda memiliki blok selamanya, Anda bisa memiliki ini mobil melakukan ini selamanya. Kami memiliki kemampuan untuk memiliki beberapa keacakan. Jadi game ini tidak harus persis sama setiap kali. Mereka log, mobil-mobil, bisa mulai waktu yang sedikit berbeda sehingga Permainan itu sendiri adalah lebih menarik dengan masing-masing bermain game. Dan Sementara itu, kami telah melihat kemampuan untuk mendengarkan spasi. Tapi yang jelas, di Scratch, bisa Anda juga mendengarkan atas, bawah, kiri, kanan, dan benar-benar ada tombol pada keyboard. Dan Anda juga dapat melakukan beberapa hal lainnya. Biarkan aku pergi ke depan dan kembali ke versi web. Biarkan aku pergi ke dalam koleksi kami dari contoh di sini. Dan di bawah Studio saya, Video yang adalah, pada dasarnya, folder pada scratch.mit.edu. Kami memiliki versi web semua proyek-proyek ini. Dan mari kita lihat apakah saya bisa mendapatkan komputer untuk bekerja sama di sini. Ini ditulis oleh salah satu teman kita di MIT, yang disebut Pindah Butterfly. Dan sekali ini membuka, ini akan benar-benar menggunakan lebih dari hardware komputer saya. Scratch terjadi dilaksanakan dengan Flash. Flash dapat berbicara dengan webcam Anda, jika Anda memiliki satu. Jadi jika saya pergi ke depan dan layar penuh ini sini, klik bendera hijau, pemberitahuan bahwa pesan keamanan Flash mengatakan, apakah Anda ingin memungkinkan untuk menggunakan webcam saya? Biasanya, Anda harus mungkin mengatakan Deny. Tapi dalam kasus ini, kita akan mengatakan memungkinkan. Lalu aku akan memberitahu Chrome untuk memungkinkan ini juga. Dan sekarang, hanya dalam beberapa saat, Anda melihat saya, ya, saya. Dan jika tanganku naik - Aku harus tidak bergerak saya kepala pada saat yang sama. Ada juga refleksi di layar. Ayolah, di sana kita pergi - Anda dapat memindahkannya di layar karena ada juga potongan puzzle - oh, Anda tahu apa itu, itu karena Anda juga melihat layar proyektor di belakang saya. Jadi kita memiliki sedikit terbatas hal yang terjadi di sana. Baiklah, jadi saya akan bermain di sini. Di sana kami pergi. Jadi ada juga potongan puzzle yang mengatakan, ketika Anda melihat gerakan bawah salah satu sprite, Anda dapat memilikinya pergi atas, bawah, kiri, kanan atau sejenisnya. Jadi kita memiliki sedikit virtual reality terjadi di sini juga, semua dalam batas-batas browser saya, hanya disini menggunakan webcam saya. Jadi apa yang kemudian di cakrawala. Masalah pertama set, karena Anda akan melihat, atau website akan pergi online kemudian malam ini di cs50.net, cukup banyak akan terbuka berakhir. Dan melaksanakan proyek Scratch menarik bagi Anda, permainan, sebuah interaksi, sesuatu yang artistik, dan menantang diri untuk menggunakan jumlah potongan-potongan teka-teki. Dan itu dapat menjadi interaktif dengan cara ini. Atau bisa menjadi sesuatu yang lebih sengaja dibuat untuk menceritakan sebuah cerita. Dan memang, itulah di mana kami akan berakhir off hari ini, dengan satu contoh terakhir. Biarkan aku pergi ke Scratch lokal. Biarkan aku pergi ke depan dan membuka ini, dan bermain satu program terakhir yang ditulis oleh salah satu pendahulu Anda, yaitu yang satu di sini. Baik, meningkatkan volume untuk yang satu ini. [MUSIC PLAYING] Narator: Pada CS50 berikutnya, David mengundang sukarelawan panggung. DAVID Malan: Untuk demo ini, kita akan membutuhkan satu relawan. Apakah Anda ingin datang di bawah? Siapa nama Anda? Pindah.