[MUSIC PLAYING] -Baiklah! -Ini CS50. -Ini CS50. -Ini CS50. [MUSIC - IGGY AZALEA, "FANCY"] Memori favorit -My dari CS50 adalah ketika saya pergi ke Teka-Day. -Mungkin Hanya waktu menghabiskan bekerja pada masalah set dengan teman-teman dan orang-orang yang wold akhirnya menjadi blockmates saya. -My Memori terbaik dari CS50 adalah Hackathon. -The CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -The Hackathon -Rob Bowden. Hanya segala sesuatu tentang dirinya. [MUSIC - IGGY AZALEA, "FANCY"] Memori favorit -My adalah ketika saya berada di panggung dan aku memainkan peran bergengsi dari node [? dalam Linked?] [? Daftar. ?] -Ketika Kita semua mendapat Dropbox ruang bebas dan David adalah seperti, lihat di bawah kursi Anda. Dan itu seperti, ruang untuk semua orang! [MUSIC - IGGY AZALEA, "FANCY"] Saran -My untuk setiap siswa yang masuk akan adalah untuk benar-benar bekerja pada P-set dengan teman-teman. Jam -Office sangat banyak teman Anda. -Buatlah Sebagian besar pengalaman Anda dan bertemu orang sebanyak yang Anda bisa. -Jangan Takut untuk meminta bantuan. -Mulai P-set di awal minggu. -Saya pikir hal terbesar adalah untuk memanfaatkan semua sumber daya CS50 yang memiliki. -Pergi Ke jam kantor di awal minggu. -Jelas Menonton celana pendek. Don 't menunda-nunda pada P-set Anda. -Pastikan Anda menemukan kelompok besar orang untuk bekerja pada P-set dengan. Anda dapat memiliki banyak menyenangkan dan mendapatkan pekerjaan yang dilakukan bersama-sama. -Jangan Takut untuk mendorong diri sendiri. Pergi untuk edisi hacker kadang-kadang. Hal -Menulis di atas kertas sebelum Anda pernah menyentuh komputer Anda. -CS50 Benar-benar hebat di menyediakan cara untuk mendapatkan bantuan. -My Satu bagian dari nasihat adalah tidur. Ada yang mengatakan bahwa? Tidur, pasti. Sangat mudah untuk tidak melakukan, tapi Anda harus melakukannya, saya pikir. -Aku Akan mengatakan benar-benar mempersiapkan mental karena Anda akan menyukainya. [MUSIC - IGGY AZALEA, "FANCY"] -Ini CS50. -Ini CS50. -Ini CS50. [MUSIC - IGGY AZALEA, "FANCY"] -Ini CS50. [Tepuk Tangan] DAVID J. Malan: Jadi ini adalah CS50 dan ini adalah akhir dari minggu 0. Dan itu hanya beberapa staf CS50 ini yang menanti Anda tidak hanya di bagian dan jam kantor, tapi, juga, akhir pekan mendatang di CS50 Puzzle Day. Yang, sekali lagi, tidak semua tentang pemrograman. Memang, itu diharapkan bahwa Anda tidak perlu memprogram apa-apa, melainkan memecahkan masalah dengan menggunakan akal dan teman-teman bersama Anda. Kami akan bergabung dengan beberapa teman-teman kita di Facebook-- jika Anda mendaftar di sini-yang selama beberapa tahun terakhir, telah benar-benar telah menulis tantangan ini dengan kami. Jadi, mereka akan menjadi orang-orang akhirnya menjalankan Puzzle Day. Jadi, Anda akan ditantang dengan tepat hal-hal yang dan masalah yang orang-orang di Facebook ingin berpikir tentang. Sehingga besok. Mendaftar di cs50.harvard.edu/register. Sekarang kata pada pasangan staf khususnya. Ini di sini adalah Ansel Duff, yang sebenarnya adalah salah satu co-penulis biner ini lampu yang kami lihat pada hari Rabu, selain CS50 sendiri Dan Bradley. Ansel Duff juga mantan mahasiswa advisee saya 3 tahun yang lalu dan dia benar-benar bahkan membangun podium ini. Dia pergi untuk melakukan ilmu teknik dan banyak lagi. Sekarang, fotonya di sini sebenarnya Ansel 3 tahun yang lalu di CS50 Hackathon ketika ia meminjam salah satu dari kami balon, terjebak ke laptop-nya, dan, untuk 12 berikutnya beberapa aneh jam, fokus pada proyek terakhirnya, mengambil istirahat hanya untuk membuka tas permen di Hackathon. Tapi dia melanjutkan lebih baru-baru ini untuk menghabiskan musim panas ini dengan kami, sejak CS50 untuk staf, dan sekarang mahasiswa semester ini, memiliki printer 3D sendiri. Dan singkatnya sebuah printer 3D sebuah perangkat yang terlihat cukup seperti ini. Anda mengisinya dengan spool plastik yang dilebur oleh perangkat dan Anda membangun sesuatu harfiah dari apa-apa. Sama seperti printer inkjet, Anda mulai menyemburkan titik kecil dari plastik bahwa bentuk bersama-sama untuk membentuk seluruh objek. Jadi Ansel misalnya, sebelumnya musim panas ini, memiliki 5 iPhone dan memutuskan dia benar-benar ingin untuk menopang itu di mejanya. Tapi dia tidak mau pergi keluar dan membeli sesuatu dari toko Apple atau sejenisnya, sehingga ia duduk dan mulai menggambar sesuatu. Dia mengambil beberapa pengukuran bagaimana tebal dan seberapa luas iPhone nya, ia menarik gambar ini di sini, ia memutuskan bahwa ia ingin memiliki kemiringan 75 derajat seperti itu menatap dia di mejanya ada. Dia kemudian berbalik ini, dengan menggunakan software, menjadi model 3D CAD yang tampak sedikit sesuatu seperti ini. Dan kemudian ia melanjutkan, akhirnya, untuk benar-benar membuatnya. Jadi sebenarnya, jika ada di antara kalian di sini, mungkin berturut-turut bahwa saya bisa melempar, punya an-- sana kami memiliki orang-orang dengan iPhone 5, dan di sini kita memiliki dua lagi. Sekarang, tidak mau kalah, CS50 sendiri Cheng Gong juga ditetapkan musim panas ini untuk membangun beberapa hal dan, pada kenyataannya, untuk alasan yang masih jelas, telah perlahan-lahan mencetak pasukan gajah dengan mengartikulasikan lengan dan batang. Beberapa yang sebenarnya di sini jika orang sekarang akan seperti-- gajah. Baiklah,. tapi apa Cheng juga melakukan bagi kita adalah dia sangat ramah mengatur kamera karena gajah itu, percaya atau tidak, mengambil beberapa dua dan setengah jam untuk mencetak. Bahkan berdiri iPhone mengambil satu jam setengah untuk mencetak. Dan apa Cheng pergi ke depan dan melakukan didirikan kamera yang bagus di depan printer 3D ini, difilmkan selama satu jam dan setengah desain Ansel dicetak. Kami disalut beberapa seksi musik itu dalam rangka untuk memberikan ini untuk melihat bagaimana cetak 3D bekerja. Dan meskipun ini sebenarnya dalam plastik, menyadari bahwa jika ini adalah area menarik bagi Anda secara akademis, ada orang-orang, di antara mereka Jennifer Lewis di sini di Sekolah Teknik, yang sebenarnya bekerja pada pencetakan 3D benda plastik. Tetapi bahkan, semakin, bahan biologis untuk memecahkan masalah fisiologis bagi manusia. Tapi di sini adalah sedikit sesuatu dari CS50. [LOUD MECHANICAL suara] DAVID J. Malan: Tidak terdengar hal seperti itu dalam kenyataannya, tapi itu jauh lebih keren untuk melihatnya pada kecepatan itu, dan dengan suara. Sekarang, pada hari Rabu, bagaimana Apakah kita lebih dulu sampai di sini? Kami mulai berbicara tentang komputer ilmu pengetahuan dan kami bertanya apa itu. Dan ini tentang beberapa hal, dan ada begitu banyak arah yang berbeda di mana Anda dapat kepala setelah kursus seperti CS50. Bahkan, jika Anda mengambil salah satu tersebut panduan resmi ke CS luar, buklet yang kami telah disediakan, apakah Anda berpikir untuk mengambil hanya CS50, atau mungkin melakukan sekunder, atau mungkin bahkan berkonsentrasi di CS, jangan membalik-balik itu. Dan Anda akan melihat diagram menjelang akhir yang berisi berbagai arah di CS bahwa Anda dapat pergi di. Tapi untuk hari ini, kita akan fokus, lagi, pada benar-benar salah satu pandangan mendasar, mungkin, di mana Anda memiliki masukan untuk masalah, Anda memiliki output dari masalah, dan Anda memiliki algoritma yang dapat digunakan untuk membuat mereka output dari input tersebut. Dan salah satu contohnya, adalah dari Tentu saja, ini buku telepon di sini. Dan kami digunakan sebagai contoh untuk pergi melalui suatu algoritma yang benar. Dan kemudian satu sama lain adalah benar, tapi sedikit lebih cepat. Kemudian satu lagi yang sedikit lebih dramatis, tetapi pada dasarnya lebih cepat. Benar, ini telepon buku kami mengklaim memiliki sekitar 1.000 halaman. Dan berapa kali aku memiliki untuk merobek buku telepon di setengah untuk menemukan seseorang seperti Mike Smith, maksimal, dalam 1.000 halaman buku? Jadi, 10 memberi atau mengambil. Jadi setelah saya merobek hal ini di setengah, atau hanya, lebih matang, dibagi dua, itu hanya 10 halaman dari 1.000. Dan jika Anda meramalkan kemungkinan, sedikit realistis untuk buku telepon, tetapi jika buku telepon ini memiliki beberapa 4 miliar halaman di dalamnya, sehingga benar-benar berat secara fisik, berapa banyak kali Anda membagi 4 miliar Halaman buku telepon di setengah? Jadi itu sebenarnya 32, memberi atau mengambil. Dan jadi 32 kali saja, keluar dari 4 miliar halaman, bisa Anda menemukan seseorang seperti Mike Smith. Dan itulah efisiensi. Itu algoritma yang baik, berani mengatakan. Tapi kemudian kami pindah dari itu mencoba untuk meresmikan itu. Dan saya mengusulkan kode pseudo ini. Kode Pseudocode tidak apa-apa formal. Ini bukan sesuatu yang Anda menghafal. Ini hanya sesuatu yang Anda mengekspresikan cukup intuitif menggunakan bahasa Inggris, atau bahasa apapun benar-benar, bahwa menyampaikan ide-ide Anda ringkas. Tapi apa yang penting tentang kode pseudocode adalah bahwa Anda mencoba untuk mengantisipasi semua kemungkinan kasus yang mungkin terjadi. Dan memang, dalam pseudocode ini kode, ada yang benar-benar tiga kasus setiap kali saya membagi buku telepon. Mike mungkin ke kiri. Mike mungkin ke kanan. Atau ia mungkin benar di halaman aku di. Atau kasus sudut keempat, sehingga untuk berbicara. Skenario yang buruk mungkin menjadi salah satu which-- apa yang terjadi? Mike hanya tidak di buku telepon sama sekali. Dan ketika program crash-- ketika Mac dan software PC yang kalian jalankan pada komputer Anda kadang-kadang hang atau berhenti tiba-tiba, yang umumnya berarti bahwa beberapa programmer, beberapa manusia seperti kamu segera, hanya mengacaukan dan membuat beberapa kesalahan. Mungkin tidak mengantisipasi bahwa mungkin ada ada Mike Smith di buku telepon. Dan jika Anda tidak benar-benar menulis kode untuk menangani situasi seperti itu, umumnya tak terduga hal bisa terjadi. Mesin Anda dapat membekukan. Hal ini dapat reboot. Program ini bisa berhenti. Jadi semua ini kebodohan yang Anda mungkin jumpai di sebenarnya hidup hanya menggunakan komputer, akan semakin menjadi hanya dijelaskan oleh intuisi ini dan pemahaman tentang apa yang sebenarnya terjadi di bawah tenda. Sekarang mari kita coba untuk melihatnya pada masalah yang lebih umum. Daripada mengambil kehadiran di tempat seperti ini, yang akan menjadi sangat lambat untuk melakukan satu, dua, tiga, empat. Atau mungkin dua, empat, enam, delapan. Mari kita fokus, sebaliknya, pada bagaimana kita bisa memformalkan algoritma dari proses dengan yang kita bisa mengambil kehadiran. Dan sepanjang jalan, mari kita mulai menerapkan beberapa nomenklatur bahwa kita akan menggunakan hari ini ketika kita benar-benar memulai pemrograman dalam bahasa. Jadi saya memberi Anda sekarang, video empat menit bahwa kita bersama-sama dengan teman-teman kita dari TED, organisasi. Dimana kita diberikan naskah dan mereka membawa animator mereka untuk menanggung, dan benar-benar menciptakan 2D animasi apa algoritma adalah. Jika kita bisa meredupkan lampu. [MUSIC PLAYING] Narator: Apa algoritma? Dalam ilmu komputer, algoritma adalah satu set instruksi menyelesaikan beberapa masalah langkah-demi-langkah. Biasanya, algoritma dieksekusi oleh komputer, tapi kita manusia memiliki algoritma juga. Misalnya, bagaimana akan Anda pergi tentang menghitung jumlah orang di sebuah ruangan? Nah, jika Anda seperti saya, Anda mungkin akan menunjuk pada setiap orang satu per satu dan menghitung dari nol. Satu, dua, tiga, empat, dan sebagainya. Nah, itu suatu algoritma. Bahkan, mari kita coba untuk mengekspresikan itu sedikit lebih formal dalam kode pseudo. Sintaks bahasa Inggris-seperti itu menyerupai bahasa pemrograman. Misalkan n sama 0. Untuk setiap orang di ruangan, mengatur n sama dengan n ditambah 1. Bagaimana menafsirkan pseudocode tersebut? Nah garis yang menyatakan, sehingga untuk berbicara, variabel disebut n dan menginisialisasi nilainya ke 0 Ini hanya berarti bahwa pada awal algoritma kami, hal dengan yang kita menghitung memiliki nilai 0. Setelah semua, sebelum kita mulai menghitung kami belum menghitung apa pun. Memanggil variabel ini n hanya konvensi. Aku bisa menyebutnya apa yang paling. Sekarang baris dua demarks awal loop, urutan langkah-langkah yang akan ulangi beberapa beberapa kali. Jadi, dalam contoh kita, langkah kita Pengambilan menghitung orang di ruangan. Di bawah baris keduanya adalah baris tiga yang menggambarkan bagaimana kita akan pergi tentang menghitung. Lekukan ini menyiratkan bahwa itu garis tiga yang akan mengulang. Jadi dengan kode pseudo adalah katakan adalah bahwa setelah mulai dari 0 untuk setiap orang di Kamar kami akan meningkatkan n oleh 1 Sekarang adalah algoritma ini benar? Nah mari kita menggedor sedikit. Apakah bekerja jika ada dua orang di ruangan? Mari kita lihat. Sejalan satu kita menginisialisasi n dengan 0. Untuk masing-masing dua orang ini, kita kemudian kenaikan n oleh 1. Jadi dalam perjalanan pertama melalui lingkaran, kami memperbarui n dari 0 ke 1. Pada perjalanan kedua melalui itu loop yang sama, kami memperbarui n 1 sampai dengan 2. Jadi, dengan ini algoritma end, n adalah 2, yang memang cocok nomor orang di ruangan. Sejauh ini, begitu baik. Bagaimana kasus sudut meskipun? Misalkan ada 0 orang di room-- selain aku, siapa melakukan penghitungan. Sejalan satu, kita kembali menginisialisasi n dengan 0. Kali ini meskipun, garis tiga tidak mengeksekusi sama sekali karena tidak ada orang di dalam ruangan. Jadi n tetap 0, yang memang cocok jumlah orang di dalam ruangan. Cukup sederhana, kan? Tapi menghitung orang satu per satu sangat tidak efisien, juga, bukan? Tentunya kita bisa berbuat lebih baik. Mengapa tidak menghitung dua orang pada satu waktu, bukannya menghitung satu, dua, tiga, empat, lima, enam, tujuh, delapan, dan sebagainya. Mengapa tidak menghitung dua, empat, enam, delapan, dan seterusnya? Bahkan terdengar lebih cepat. Dan itu pasti. Mari mengungkapkan optimasi ini dalam kode pseudo. Misalkan n sama 0. Untuk setiap pasangan orang di kamar, mengatur n sama dengan n ditambah 2. Cukup perubahan sederhana, kan? Daripada menghitung orang satu per satu, kita bukan menghitung mereka dua sekaligus. Algoritma ini, dengan demikian, dua kali lebih cepat yang terakhir. Tapi apakah itu benar? Mari kita lihat. Apakah bekerja jika ada dua orang di ruangan? Sejalan satu, kita menginisialisasi n dengan 0. Untuk itu satu pasang orang, kita kemudian kenaikan n oleh 2. Dan sehingga dengan algoritma ini end n adalah 2, yang memang cocok nomor orang di ruangan. Misalkan berikutnya yang ada zero orang di dalam ruangan. Sejalan satu kita menginisialisasi n dengan 0. Seperti sebelumnya, garis tiga tidak mengeksekusi semua karena tidak ada pasangan orang di dalam ruangan, dan begitu n tetap 0. Yang memang cocok dengan jumlah orang di dalam ruangan. Tapi bagaimana jika ada tiga orang di ruangan? Bagaimana algoritma tarif ini? Mari kita lihat, dalam satu baris, kita menginisialisasi n dengan 0. Untuk sepasang dari orang-orang, kita kemudian kenaikan n oleh 2. Tapi kemudian apa? Tidak ada lagi penuh sepasang orang di dalam ruangan, sehingga garis dua tidak lagi berlaku. Jadi pada akhir algoritma ini, n masih 2 yang tidak benar. Memang algoritma ini dikatakan buggy karena memiliki kesalahan. Mari kita ganti rugi dengan beberapa kode pseudo baru. Misalkan n sama 0. Untuk setiap pasangan orang di kamar, mengatur N sama n ditambah 2. Jika salah satu orang tetap berpasangan, mengatur N sama dengan n ditambah 1. Untuk mengatasi masalah khusus ini, kami telah diperkenalkan sejalan empat kondisi, atau dikenal sebagai cabang, yang hanya mengeksekusi jika ada satu orang yang kita tidak bisa memasangkan dengan yang lain. Dan sekarang, apakah ada satu, atau tiga, atau ganjil orang di dalam ruangan, algoritma ini sekarang akan menghitungnya. Bisakah kita melakukan bahkan lebih baik? Nah, kita bisa menghitung bertiga, atau merangkak, atau bahkan balita dan puluhan, tetapi di luar itu, itu akan mendapatkan sedikit sulit untuk menunjuk. Pada akhir hari, apakah dieksekusi oleh komputer atau manusia, algoritma hanya satu set instruksi yang dapat digunakan untuk memecahkan masalah. Ini adalah hanya tiga. Masalah apa yang akan Anda memecahkan dengan algoritma? DAVID J. Malan: Jadi sengaja, program yang sangat sederhana, algoritma yang sangat sederhana, untuk mencapai sesuatu sangat sederhana, menghitung jumlah orang di dalam ruangan. Tapi mari kita menggoda terpisah beberapa perwakilan fitur di sini yang benar-benar akan berguna bahkan ketika melaksanakan sebagian kompleks perangkat lunak. Jadi misalnya, di baris pertama ini, kita memiliki apa yang kita sebut variabel, dan dari aljabar, kau umumnya akrab dengan menggunakan x dan y dan z kadang-kadang, dan sebagainya. Namun dalam pemrograman, variabel masih, pada akhir hari, sangat mirip dengan. Tapi itu mungkin mudah untuk berpikir dari variabel hanya sebagai wadah. Dan, pada kenyataannya, itu adalah beberapa jumlah bit dilaksanakan entah di hard disk Anda atau dalam memori komputer Anda, tetapi lebih pada di masa depan. Ini hanya sebuah wadah. Dan jika Anda mengatakan sesuatu seperti membiarkan n sama 0, baik itu seperti memanggil kaca ini mangkuk sini n, hanya nama sewenang-wenang, dan menempatkan tidak ada di dalamnya awalnya. Jadi nilai ini mangkuk saat ini adalah nol. Dan tentu saja jika Anda melihat dalam baris berikutnya, untuk benar-benar kenaikan beberapa garis kode, seperti dalam baris ketiga ini di sini, dengan 1, itu seperti mengatakan apa nilai sekarang dari n, itu 0, ditambah 1, menempatkan sesuatu seperti ping pong bola di sini. Sekarang nilai ini variabel cukup hanya 1. Dan Anda bisa sangat cepat ekstrapolasi, tapi sekarang 2, sekarang 3, dan seterusnya. Jadi itu semua variabel adalah. Ini adalah bagian dari penyimpanan untuk benar-benar menyimpan beberapa data. Untuk saat itu bola ping pong. Ada itu nomor. Tapi bisa kata-kata dalam kamus, seperti spell checker Saya singgung pada Rabu untuk salah satu masalah set tahun lalu. Sekarang ide kunci lain, yang sama cukup intuitif saya akan mengklaim, adalah bahwa dari lingkaran. Dan loop dalam proses menghitung semua orang , tentu saja, melakukan hal yang sama hal lagi dan lagi-- salah satu pada satu atau dua kali pada satu waktu. Dan Anda dapat mengekspresikan ini dalam bahasa Inggris, atau kode pseudo, di berbagai cara, tetapi menggunakan preposisi ini "untuk" adalah cara yang sangat umum untuk melakukan itu. Untuk setiap orang di ruangan itu, melakukan hal ini. Lagi dan lagi. Dan fakta bahwa itu indentasi, garis tiga, hanya berarti bahwa apa yang Anda seharusnya melakukan adalah hal-hal yang menjorok di bawah garis dua itu sendiri. Hanya konvensi manusia, tapi yang umum seperti yang akan kita lihat dalam lebih tinggi sebenarnya bahasa pemrograman tingkat. Sekarang sedikit lebih menarik adalah ketika Anda mendapatkan dalam kasus sudut. Misalnya, sudut kasus adalah ketika ada tiga orang, atau lima, atau tujuh, atau ganjil orang di dalam ruangan, karena hal itu dengan berpasangan rem akhirnya karena Anda akan kehilangan seseorang, baik di awal atau akhir tergantung pada bagaimana Anda melakukannya. Jadi, sekarang, aku punya cabang ini, atau kondisi, jika satu orang tetap, kemudian pergi ke depan dan menangani salah satu yang orang kesepian yang tidak mendapatkan dipasangkan dengan orang lain. Jadi itulah apa yang kita sebut kondisi, atau cabang. Kode Sekarang pseudocode lebih umum dapat ditulis untuk memecahkan sejumlah masalah. Dan apa yang saya pikir kami akan lakukan di sini adalah luangkan waktu mengundang akan kita katakan CS50 ini memiliki Rob Bowden di atas panggung akan bergabung dengan dua relawan, yang tidak tahu apa yang menanti. Sebuah tangan turun segera setelah aku mengatakan itu. Bagaimana Anda pada berakhir di sini, datang ke atas. Dan bagaimana dari jauh pergi, bagaimana cara di belakang. Barisan belakang, ayolah dengan tangan Anda. Baiklah, dan siapa namamu? ANITA: Anita. DAVID J. Malan: Anita. Oke, senang bertemu Anda. Mari saya perkenalkan Anda untuk Rob Bowden. Ini adalah Anita. Dan siapa namamu? Kiersten: Kiersten DAVID J. Malan: Kiersten. Kiersten, naiklah dan bertemu Rob Bowden dan Anita. Senang bertemu Anda. Kiersten: Senang bertemu Anda. DAVID J. Malan: Baiklah, Rob. ROB Bowden: Senang bertemu Anda. DAVID J. Malan: Anita. Kiersten: Hi Anita. DAVID J. Malan: Dan Anda beberapa ratus teman sekelas. Jadi, sekarang biarkan aku pergi ke depan dan tarik up hanya sebuah program sederhana di sini pada Mac OS yang akan membiarkan saya benar-benar menuliskan beberapa catatan bawah. Dan jika kalian ingin setiap mengambil posisi di salah satu sekolah di sana, biarkan aku pergi ke depan dan mulai daftar kode pseudo, jika Anda mau. Dan apa yang ingin saya lakukan di sini, akhirnya adalah jenis untuk Anda beberapa petunjuk yang kami penonton sebenarnya akan membacakan bagi kita. Biarkan aku pergi ke depan dan hanya mengubahnya ke daftar bernomor untuk mencocokkan apa yang kami lakukan di sana. Dan apa yang akan saya lakukan dengan bantuan Anda, adalah menulis sebuah program dalam pseudocode, dengan yang orang-orang ini akan untuk menerapkan kacang butter dan jelly sandwich. Jadi mungkin berhubung dengan menampilkan sesuatu yang sebagian dari Anda mungkin telah melihat di internet hanya sesaat mengganggu singkat. [MUSIC BUCKEWHEAT BOYS, "kacang BUTTER  JELLY WAKTU "] DAVID J. Malan: OK. Sudah cukup itu. Jadi di sini sementara itu, saya memiliki sepasang Google Glasses yang kami akan mengenakan CS50 sendiri Rob Bowden untuk melihat dunia melalui matanya. Dan kami akan melakukan yang terbaik dalam posting produksi untuk benar-benar menenun rekaman apa Rob adalah melihat sekarang, dalam kuliah yang sebenarnya ini video dengan dua kami relawan di sampingnya. Jadi apa yang saya lakukan , aku akan pengetik. Kami memiliki tujuan di sini dari benar-benar menulis sebuah program yang dapat digunakan untuk membuat, pada akhirnya, selai kacang dan jelly sandwich tapi tiga ini akan berperilaku seolah-olah mereka adalah komputer. Dan komputer, pada akhir hari, sebenarnya perangkat cukup bodoh. Mereka super cepat, tapi mereka hanya bisa dilakukan, secara harfiah, apa yang mereka diberitahu. Anda tidak bisa hanya mengatakan membuat kacang butter dan jelly sandwich. Anda harus memprogram mereka untuk melakukan itu. Anda harus memberitahu mereka dengan presisi apa yang harus dilakukan, kurang hal-hal pergi mengerikan dan, mudah-mudahan, menggelikan serba salah. Jadi dengan mengatakan bahwa, kita perlu satu panggilan-out dari penonton untuk apa harus melangkah satu menjadi, jika tujuannya di sini adalah untuk membuat kacang butter dan jelly sandwich. Ya? AUDIENCE: [Tak terdengar] tas roti. DAVID J. Malan: Buka kantong roti. Jadi jika ketiga kontestan akan ingin melanjutkan untuk melakukan itu secara harfiah. Buka kantong roti. [AUDIENCE TERTAWA] DAVID J. Malan: Jadi mari kita bekerja pada itu. Baiklah. Jadi langkah kedua, how-- mari kita mengambil ini lebih lanjut. Ya, di depan. AUDIENCE: [Tak terdengar] roti. DAVID J. Malan: Apa itu? AUDIENCE: Hapus roti. DAVID J. Malan: Hapus roti. Demikian pula ringkas. Terima kasih. [Tepuk Tangan] DAVID J. Malan: Itu saja? OK, jadi langkah dua akan menjadi menghapus roti. Baiklah, seseorang ingin menulis kami kalimat yang lebih panjang? Orang lain? Sedikit lebih [Tak terdengar]. Tidak, tidak sekarang. Ya? AUDIENCE: Tempatkan dua irisan samping satu sama lain. DAVID J. Malan: Tempatkan dua irisan samping satu sama lain. [AUDIENCE TERTAWA] DAVID J. Malan: Tempatkan dua irisan samping satu sama lain. Langkah empat. Ya? AUDIENCE: Ambil Anda tangan dan mengaturnya ringan di atas tutup selai kacang. [AUDIENCE TERTAWA] AUDIENCE: [Tak terdengar] sebelah selai kacang. DAVID J. Malan: Apa? Katakanlah itu lagi. AUDIENCE: Lepaskan tutup dan menempatkan dengan lembut di sebelah selai kacang. DAVID J. Malan: Taruh lembut sebelah selai kacang. OK, kemajuan. Langkah kelima. Sangat baik. Ya? Ambil pisau. DAVID J. Malan: Ambil pisau. OK, langkah enam. Ya? AUDIENCE: Tahan pisau pada pegangannya. DAVID J. Malan: Tahan pisau pada pegangannya. Memegang pisau pada pegangannya. Langkah tujuh. Ya? AUDIENCE: [Tak terdengar] pisau di kacang mentega dan sedikit keluar [Tak terdengar]. DAVID J. Malan: Masukan pisau in-- saya mendengar "meletakkan pisau di selai kacang dan memakan sedikit mungkin. " By the way, keluarkan kertas pertama. Baiklah, langkah sembilan. Langkah sembilan. Langkah sembilan. Kami belum benar-benar membuat sandwich belum. Ya? AUDIENCE: Menggunakan pisau selai kacang, menerapkan selai kacang pada roti kata. DAVID J. Malan: Menggunakan pisau selai kacang, selai kacang menerapkan pada kata roti. [AUDIENCE TERTAWA] DAVID J. Malan: Semua langkah yang tepat 10. Langkah 10. Ya? AUDIENCE: Taste kacang mentega untuk memastikan kualitas. [AUDIENCE TERTAWA] DAVID J. Malan: Langkah 11. Langkah 11. Langkah 11. Ayo. Ya? Di sana. AUDIENCE: Hati-hati mengambil jelly. DAVID J. Malan: Hati-hati mengambil jelly. OK, dan kemudian tangan lain naik. Tepat di belakang Anda. Ya, warna biru. AUDIENCE: Baiklah, hapus tutup dari [Tak terdengar], ya, melepas tutup dari jeli. [AUDIENCE TERTAWA] DAVID J. Malan: Dari jelly. Ha ha. [AUDIENCE TERTAWA] DAVID J. Malan: Dan? AUDIENCE: Dan hampir menyapu setiap [Tak terdengar]. [AUDIENCE TERTAWA] AUDIENCE: Tentu saja, sebelum [Tak terdengar], mengeluarkan kertas dari jelly. DAVID J. Malan: Keluarkan kertas dari jelly. Langkah 14. Kita hampir sampai. Ya? AUDIENCE: botol Invert jelly sebelum semuanya jatuh. DAVID J. Malan: Invert jelly botol sebelum jelly jatuh. Langkah 15. AUDIENCE: Ganti tutup. DAVID J. Malan: Ganti tutup. Langkah 16. Ya? AUDIENCE: [Tak terdengar] DAVID J. Malan: Katakan lagi. AUDIENCE: Ambil topi off dari jelly Anda. DAVID J. Malan: Off jelly Anda. Jadi benar-benar-- Oops. Ayo. Ganti tutup. Masukan cap-- Kau bilang menghapus cap dari jelly. Merasa seperti kita berada di sedikit loop. Langkah 17. Ya? AUDIENCE: [Tak terdengar] DAVID J. Malan: Katakan lagi. AUDIENCE: [Tak terdengar] DAVID J. Malan: Kembali ke step-- AUDIENCE: [Tak terdengar] DAVID J. Malan: Hapus topi dari selai kacang. Ya? AUDIENCE: Drop semua jelly pada roti. DAVID J. Malan: Drop semua jeli pada roti. DAVID J. Malan: Kita hampir sampai. Langkah 19. AUDIENCE: Hapus kelebihan jelly. DAVID J. Malan: Haha, jelly. [Tepuk Tangan] DAVID J. Malan: Mengapa tidak kita-- satu langkah lagi untuk dibawa pulang ini. Satu langkah lagi dan kemudian kami akan melayani sandwich. Ya? AUDIENCE: [Tak terdengar] DAVID J. Malan: Sementara sandwich apapun indent remains-- mari kita ini-- makan. [AUDIENCE Tertawa] DAVID J. Malan: Baiklah, terima Anda relawan kami di sini. [Tepuk Tangan} DAVID J. Malan: Kami memiliki beberapa nice hadiah perpisahan untuk masing-masing Anda. Anda sendiri selai kacang, jeli, dan roti untuk membawa pulang. Terima kasih. Kiersten: Terima kasih. DAVID J. Malan: [Tak terdengar] menyambut. [Tepuk Tangan] DAVID J. Malan: Jadi, ini adalah, Tentu saja, contoh konyol. Benar? Tapi itu semacam mengungkapkan bagaimana kita manusia hanya mengambil kejelasan begitu saja. Dan fakta aku sudah berbicara dengan manusia lain, ia hanya tahu apa yang Anda maksud. Komputer tidak akan untuk mengetahui apa yang Anda maksud, bahkan ketika menggunakan, sebagai kita akan lakukan hari ini, pemrograman sesuatu di Scratch, tarik dan drop, bahasa puzzle gaya potongan. Bahkan dirancang untuk anak muda anak-anak, Anda memiliki begitu eksplisit dan begitu literal dengan apa yang ingin Anda program yang dapat dilakukan. Sekarang akhirnya, kami akan pemrograman tidak dalam kode pseudo, Inggris seperti sintaks, tapi kode atau, lebih tepat, kode sumber. Source code hanya cara mewah untuk kode yang menggambarkan Anda benar-benar menulis dengan keyboard yang tidak dalam bahasa Inggris per se. Itu di C atau Java atau C ++ atau sesuatu seperti itu, seperti yang kita akan segera melihat. Dan pada kenyataannya, hanya untuk menakut-nakuti beberapa dari kalian, pada pandangan pertama, ini adalah program yang ditulis dalam bahasa disebut C. Tetapi untuk un-ketakutan beberapa dari Anda, Anda akan benar-benar mengerti apa yang terjadi pada datang Senin depan ketika datang ke sesuatu seperti ini. Terus terang, ini adalah bahasa yang lebih tua. Ini cukup misterius, tapi itu perwakilan dari banyak bahasa hari ini yang memiliki banyak tanda kurung dan keriting kawat gigi, dan tanda kutip dan titik koma. Dan banyak ini hal sintaksis yang tidak sama sekali yang menarik secara intelektual. Memang, itu adalah gangguan mengucapkan dari ide-ide yang sangat sederhana yang menatap wajah kita. Program ini, seperti yang mungkin hanya menebak, cetakan ke layar komputer seseorang kata-kata "Halo dunia koma." Itu saja. Jadi jelas, ada banyak hal yang mendapatkan di jalan beberapa kejelasan di sana, tapi itu akan sangat cepat tergelincir pergi dan benar-benar intuitif. Memang, apa yang akan kita lakukan hari ini menyaring ini cukup kompleks Program mencari, yang lagi Anda akan datang untuk memahami dengan cepat, tetapi untuk sesuatu lebih sederhana. Mari kita katakan saja apa yang kita maksud. Mari kita menggambar apa yang kita maksud, dengan cara potongan-potongan teka-teki di sini. Jadi ini adalah sebuah pemrograman bahasa yang dikenal sebagai Scratch. Ini dikembangkan oleh MIT Media Lab. Dan apa yang akan Anda lihat dalam masalah set nol, yang akan dirilis nanti malam, kita harus Anda pergi ke ini URL di sini scratch.mit.edu. Dan mereka memiliki web antarmuka berbasis melalui mana Anda akan menulis program pertama Anda. Atau bagi anda dengan sebelumnya pengalaman, program kedua, tetapi dalam lingkungan yang mungkin sedikit asing dan bahwa akan mendorong Anda untuk membuat sesuatu menggunakan lingkungan yang sangat visual. Sekarang, apa yang akan saya lakukan di sini adalah membuka program itu sendiri. Itu ada tidak hanya sebagai web browser, tetapi juga sebagai program download sehingga Anda benar-benar dapat menggunakannya jika Anda tidak memiliki akses internet. Dan aku akan melakukan itu di sini, di Sanders, hanya dalam kasus Wi-Fi tidak bekerja sama super baik. Dan apa yang akan saya lakukan adalah titik keluar beberapa fitur dari program ini. Jadi, harus jelas, saya hanya ganda mengklik ikon pada desktop saya, atau ekuivalen pergi ke scratch.mit.edu, dan itu menarik jendela ini. Ini adalah lingkungan pemrograman. Ini adalah software yang beberapa teman-teman kita di MIT menulis bahwa mari kita dan Anda menulis program dalam bahasa yang disebut Scratch. Sekarang ini terjadi menjadi kucing siapa yang juga bernama Scratch dan ini adalah dunia di mana ia hidup. Ini adalah panggung, sehingga untuk berbicara, yang persegi panjang di pojok kiri atas. Dan dia tidak harus terlihat seperti kucing. Anda dapat membuatnya tampak seperti apa pun dan Anda dapat memiliki banyak sprite tersebut, atau karakter, dalam sebuah program. Sementara itu, di sini di paling benar, adalah batu tulis kosong besar. Dan ini adalah di mana, dalam sekejap, kita akan memulai pemrograman dengan menyeret dan menjatuhkan ini teka-teki grafis potongan-potongan yang tepat di sini di tengah. Dan ada cara yang lebih dari mereka daripada kita akan menghabiskan waktu di sini di kelas karena Anda akan menemukan bahwa mereka semua cukup intuitif. Sekali lagi, itu dirancang untuk anak-anak, tapi kami menggunakannya untuk menggoda selain beberapa dari mereka ide-ide dasar dari variabel, loop, kondisi, dan, segera, hal seperti fungsi dan acara dan benang, dan hal mewah lainnya kita akan bisa sebelum lama untuk benar-benar membuat sesuatu dari Scratch. Pun dimaksudkan. Sekarang, apa yang akan saya lakukan di sini adalah klik tidak gerak, tetapi kontrol. Dan ini hanya kategorisasi sini- dan aku melihat yang berbeda warna set blok. Tapi perhatikan beberapa kata akrab. "Jika" dan "else if" dan "ulangi." Dan Anda mungkin bisa menebak itu mengingatkan cabang, atau kondisi yang kita lihat, dan bahkan membangun perulangan. Jadi kita memiliki blok yang sama di sini. Tapi yang paling menarik satu adalah satu ini di sini. Ketika bendera hijau ini diklik, ini, bagi mereka dengan programing sebelumnya pengalaman, setara ke fungsi utama. Tapi bagi mereka yang tidak terbiasa, ini adalah potongan puzzle yang akan memulai kick seluruh program kami. Secara harfiah berarti ketika saya pergi, dalam hal ini Program, dan klik flag-- hijau yang dapat Anda lihat di sini di pojok kiri UI, jadi melihat bendera hijau sebelah tanda berhenti merah? Ketika saya klik itu, saya Program akan dijalankan. Sekarang, aku akan melakukan sesuatu super sederhana dengan Scratch. Aku akan pergi ke depan dan pergi ke panel terlihat di sini, di mana saya memiliki banyak a potongan puzzle ungu, dan aku akan pergi ke depan dan melakukan sesuatu yang super sederhana seperti, katakan. Dan pemberitahuan then-- ini teks dalam kotak putih adalah editable-- Aku akan mengatakan "Halo dunia," sama seperti kita lakukan di tekstual yang versi saat yang lalu. Dan jika aku pergi dan klik ini bendera hijau, saya sekarang diprogram. Ini bukan terutama program yang menarik, tapi saya membuat komputer melakukan sesuatu. Aku mulai program dan melakukan apa yang saya diberitahu itu dapat dilakukan. Sekarang, saya bisa terus drag dan drop semakin banyak potongan puzzle ini dan mereka akan saling mengunci, tapi mari kita menampar beberapa terminologi di sini bahwa kita akan melihat berulang di seluruh kursus, dan benar-benar seluruh ilmu komputer dan pemrograman lebih umum. Ini "mengatakan" block, ungu, mari kita hanya mulai menelepon sebuah pernyataan. Ini seperti pernyataan fakta. Lakukan ini. Jadi, itu adalah kategori instruksi yang Anda mungkin memberi makan komputer sebagai bagian program atau algoritma. Dan harus jelas, Anda sudah mungkin diambil untuk diberikan bahwa Anda memiliki program di komputer Anda. Dan mereka jenis algoritma, tetapi Program ini benar-benar sekelompok algoritma bahwa beberapa manusia menulis. Mereka dikemas itu dan mereka menjualnya sehingga Anda, atau mereka diposting pada sebuah situs web untuk Anda download. Jadi, program ini hanya Seluruh sekelompok nol dan satu itu, entah bagaimana, manusia diciptakan. Dan pola-pola nol dan yang mewakili hal-hal, akhirnya, seperti "menyapa dunia" atau "bermain musik ini "atau" memutar video ini " atau "mengirim email." Tapi kita akan datang kembali cara yang lebih rinci apa program adalah ketika Anda, sendiri, menulis mereka. Berikut statement-- lain "Tunggu satu detik." Saya tidak menggunakan ini, tapi jika saya ingin program saya untuk berhenti sejenak untuk melakukan sesuatu, saya dapat memberitahu untuk melakukannya. Tunggu satu detik. Sekarang satu sama lain mungkin "memainkan suara." Jadi, ini adalah unik untuk Scratch, itu memiliki kemampuan untuk memutar suara. Jadi, pernyataan saya mungkin digunakan adalah, di sini, "memainkan suara." Sementara itu, ekspresi Boolean, jadi ini adalah kata pelamun dinamai hanya seorang pria bernama Mr Bool, dan ini adalah semua tentang pertanyaan. Benar atau false-- adalah mouse ke bawah? Sebuah ekspresi Boolean hanya beberapa ekspresi dalam bahasa Inggris yang bisa benar atau salah. On atau off. Entah satu atau nol. Anda dapat menganggap itu di berbagai cara, tapi itu benar atau ini palsu, akhirnya. Jadi "mouse ke bawah tanda tanya," yang akan menjadi ekspresi Boolean. Dan Anda bisa memikirkan orang lain, mungkin. Misalnya, "adalah jumlah yang tersisa kurang dari jumlah yang tepat? " Itu pun, akan ekspresi Boolean. "Kurang dari" adalah ekspresi Boolean. Yang satu ini juga, "pointer mouse menyentuh." Saya tidak yakin mengapa mereka menyebutnya pointer mouse. Ini hanya berarti, adalah kursor, adalah panah di layar, menyentuh kucing, misalnya. Atau beberapa aspek lain dari layar. Dan itu pertanyaan, lagi, dan yang menunjukkan ekspresi Boolean. Sesuatu yang Anda mungkin ingin menggunakan dalam kondisi. Jadi kita akan datang untuk itu hanya dalam beberapa saat. Anda bisa "dan" hal-hal bersama-sama. Jadi, jika Anda ingin memeriksa apakah ini ini terjadi dan itu terjadi, Anda dapat menggunakan "dan" blok seperti ini. Dan inilah kondisi itu. Perhatikan bentuk pembukaan kecil di atas potongan puzzle kuning ini, itu mengingatkan bentuk bahwa kita hanya melihat beberapa saat yang lalu. Masing-masing ekspresi Boolean memiliki tepi menunjuk ini di sisi kiri dan kanan. Dan itu karena MIT orang memutuskan bahwa dengan bentuk visual menyampaikan, Anda dapat jenis membantu orang, siswa maupun anak-anak, untuk jenis mengisi kekosongan harfiah. Sekarang puzzle-- bahwa membuka sedikit kecil, dan seperti yang akan kita lihat dalam program ini, di Scratch, ia akan tumbuh sesuai. Ini akan mempertahankan bentuknya, akhirnya. Jadi kondisi mari kita Anda memutuskan "Saya harus melakukan sesuatu atau tidak?" Ekspresi Boolean adalah pertanyaan yang sebenarnya Anda gunakan untuk memutuskan apakah saya pergi ke kiri OR aku pergi ke kanan ketika saya menemukan ini disebut pertigaan jalan? Anda dapat memiliki dua cabang. JIKA sesuatu itu benar, lakukan ini, yang lain pergi ke arah sana, atau Anda hanya dapat melakukan apa-apa di semua, karena blok ini tersirat. Demikian pula, kita dapat sarang hal-hal ini. Jadi jika Anda ingin tiga kali lipat garpu di jalan, baik melakukan ini atau ini atau itu, Anda hanya dapat sarang hal-hal ini bersama-sama. Dan itu mulai mendapatkan sedikit jelek, akhirnya, pasti, tapi logika masih sama. Anda benar-benar dapat membaca atas ini ke bawah dan mengatakan apa yang means-- apakah ini benar, melakukan hal ini, lain jika yang lain. Sebuah lingkaran tidak mendapatkan sederhana dalam Scratch. Selamanya melakukan hal berikut. Sekarang Anda mungkin tidak berpikir Anda bisa berbuat banyak karena tidak ada banyak ruang antara bagian atas dan bawah ini pembukaan potongan puzzle. Tapi Anda akan melihat Scratch akan tumbuh sehat seperti banyak potongan-potongan teka-teki Anda ingin menjejalkan di sana. Lingkaran lain mungkin dinyatakan dengan pengulangan. Jika Anda tahu sebelumnya, "Aku ingin melakukan sesuatu 10 kali, " Anda bisa saja mengatakan Scratch untuk melakukan sesuatu 10 kali. Dan, sementara itu, kita dapat memiliki variabel. Jadi, inilah salah satu yang sewenang-wenang, itu jeruk dalam kasus ini, dan ini adalah tur angin puyuh. Sekali lagi, Anda akan menemukan ini sangat mudah setelah Anda mulai menunjuk dan mengklik. Aku bernama variabel n saya, tapi saya bisa menamakannya apapun yang saya mau, dan Aku pengaturan di sini, di contoh sewenang-wenang ini, ke nol. Sekarang melihat program seperti halo dunia tidak semua yang menarik, jadi mari kita benar-benar membuka sesuatu bahwa seorang mantan mahasiswa dibuat. Biarkan aku pergi ke depan dan membuka, misalnya, yang satu ini di sini, yang saya akan senang memiliki relawan. Baiklah, bagaimana about-- mari kita pergi lebih jauh. Ya, datang ke atas. Siapa nama Anda? ABBY: Abby. DAVID J. Malan: Abby, datang ke atas. Jadi apakah Anda pernah bermain game ini sebelumnya? ABBY: Tidak DAVID J. Malan: Baiklah. David, senang bertemu Anda. Ayo lebih. Dan apa program Anda latar belakang, jika ada. ABBY: Saya telah belajar beberapa C ++. DAVID J. Malan: Anda telah belajar beberapa C ++. Dan apa permainan Anda bermain latar belakang? ABBY: Tidak banyak. DAVID J. Malan: OK, jadi kita akan mengambil. Jadi, inilah bagaimana permainan ini akan bekerja. Aku akan pergi ke depan dan klik bendera hijau, yang adalah di sini di bagian kanan atas. Sekarang pendahulunya di kelas telah memberi Anda beberapa petunjuk di sini. Dan hanya dalam beberapa saat, itu mengatakan "ruang untuk memulai." Jadi pergi ke depan dan tekan spacebar. KOMPUTER PERTANDINGAN: Pikachu. DAVID J. Malan: Dan tujuannya adalah untuk menangkap makanan, seperti yang digambarkan di sana di sebelah kiri. Dan untuk [Tak terdengar] [PERTANDINGAN MUSIC PLAYING] DAVID J. Malan: Aww, baik, terima kasih untuk bermain. Kami telah di sini sedikit hadiah perpisahan untuk Anda. Kami memiliki CS50 stres bola, jika Anda ingin memilih. Baiklah, baik untuk bertemu Anda. Terima kasih telah datang dan menantang. Jadi kita memiliki lebih banyak bola stres, sehingga mari kita lakukan satu lagi contoh untuk memotivasi. Seorang relawan? Baiklah, bagaimana di sini, di depan. Siapa nama Anda? PHILLIP: Phillip. DAVID J. Malan: Phillip. Ayo up, Phillip. Jadi, Phillip akan menjadi ditantang dengan permainan lain bahwa salah satu pendahulu Anda menulis sebagai bagian dari permasalahan yang nol, disebut Game Hardest Ivy. Dan kita akan melihat hanya dalam saat apa yang dimaksud dengan ini. Phillip, senang bertemu Anda. Apa latar belakang Anda? PHILLIP: Selesai banyak coding. Melakukan game kecil, juga. DAVID J. Malan: OK. Punya banyak game, juga. Dan apakah Anda memainkan game ini sebelumnya? PHILLIP: Tidak DAVID J. Malan: Semua benar, jadi di sini kita pergi. Aku akan pergi ke depan dan klik bendera hijau. [PERTANDINGAN MUSIC] [MUSIC MC HAMMER, "U TIDAK BISA MENYENTUH INI"] PHILLIP: [Tak terdengar] DAVID J. Malan: [Tak terdengar] PHILLIP: [Tak terdengar] [Tertawa] [MUSIC MC HAMMER, "U TIDAK BISA MENYENTUH INI"] DAVID J. Malan: [Tak terdengar] Membajak melalui itu. PHILLIP: [Tak terdengar] DAVID J. Malan: Silakan. [MUSIC MC HAMMER, "U TIDAK BISA MENYENTUH INI"] DAVID J. Malan: Baiklah. Selamat. [Tepuk Tangan] DAVID J. Malan: Kami akan pos yang online nanti jadi Anda dapat menunda-nunda dengan itu juga. Princeton muncul berikutnya, setelah itu. Jadi sekarang mari kita benar-benar melanjutkan untuk memulai dari awal, sehingga untuk berbicara, dan benar-benar membangun sampai kita dapat menggoda selain beberapa gagasan ini dan mendapatkan sesuatu yang bahkan lebih kompleks pada akhir. Aku akan pergi ke sini dan aku akan untuk terus maju dan membuat file baru. Jadi sekali lagi, set masalah akan berjalan Anda melalui beberapa langkah. Tapi, semua saya lakukan adalah pergi ke menu File dan aku kata "baru," begitu mirip Microsoft Word, atau program apapun seperti itu. Dan mari kita pergi ke depan dan kami sekarang-- diimplementasikan "Halo dunia" beberapa saat yang lalu, tapi mari kita lakukan sesuatu yang manis sedikit. Aku akan pergi ke acara. Dan aku akan melakukan "ketika bendera hijau diklik. " Dan kemudian aku akan menggunakan, akan kita katakan, cabang. Jadi aku akan menggunakan "jika" kondisi. Dan perhatikan bagaimana begitu aku mendekati untuk itu, ia ingin untuk snap bersama-sama. Jadi aku membiarkan pergi dan terkunci bersama-sama. Dan sekarang aku bisa melakukan sesuatu yang menarik. Jika saya menelusuri sini, aku akan untuk melihat sejumlah besar blok. Jika saya pergi ke "data" - biarkan aku tampilannya in-- ada sesuatu tentang variabel. Jika saya pergi ke "gerak," Anda bisa tampaknya membalikkan keadaan. Jika saya pergi ke "operator" - oh, ini menarik, Aku bisa memilih nomor acak. Jadi biarkan aku melakukan sesuatu dengan hanya beberapa kemungkinan, hanya karena. Aku akan pergi ke depan dan tarik potongan puzzle ini, ini adalah bahwa kurang dari blok, jadi hanya "Nomor ini kurang dari satu itu?" Tapi aku tidak ingin kode keras nomor karena itu akan sangat sia-sia. Jadi aku akan menyeret bagian ini di sini, dan perhatikan bagaimana terkunci di, dan sekarang biarkan aku pergi ke depan dan berkata "jika jumlah yang dipilih secara acak kurang dari enam, lakukan hal berikut. " Sekarang mengapa kurang dari enam? Apa probabilitas ini secara efektif akan memberi saya, hanya intuitif? Sekitar 50%, kan? Jika nomor yang itu kira acak antara 1 dan 10 kurang dari enam, jelas itu salah satu, dua, tiga, empat, atau lima. Dan sehingga akan memberi saya Probabilitas 50% dari apa yang terjadi? Nah mari kita lakukan sesuatu seperti ini, "bermain meow suara." Dan pemberitahuan, sekali lagi, potongan puzzle tumbuh cocok, asalkan bentuk cocok. Itulah yang penting. Biarkan aku pergi ke Scratch di sini dan klik "bermain." Tidak ada yang terjadi. Apakah itu bug? Tidak, tidak perlu. Itu hanya bisa menjadi yang jumlah yang lebih besar dipilih. Jadi mari kita melakukannya lagi. Tidak ada. [MEOW] DAVID J. Malan: Ada itu. [MEOW] DAVID J. Malan: Again. Nomor [Mengeong] DAVID J. Malan: Jadi, jika Anda sudah pernah memainkan game, tentu saja, di mana hal-hal yang terjadi secara acak, seperti orang jahat yang datang atau tidak datang ke layar, atau hal-hal yang jatuh atau tidak jatuh, itu hanya karena sesuatu yang super sederhana seperti ini terjadi. Memilih nomor acak, dan jika itu kurang dari nilai tertentu, mungkin melakukan ini atau mungkin melakukan itu. Kita dapat menggabungkan bahwa dalam kondisi. Mari kita lakukan sesuatu yang berbeda. Mari saya membuang itu pergi. Anda dapat menyingkirkan barang oleh hanya menyeretnya ke kiri dan melepaskan. Biarkan aku pergi ke depan dan melakukan selamanya blok dan sangat cepat melakukan sesuatu yang menjengkelkan. Biarkan aku pergi ke depan dan mengatakan "bermain meow suara." Tapi aku tidak ingin ini terlalu mengganggu, jadi biarkan aku ambil blok ini, "Menunggu satu detik," dan pemberitahuan tidak ada lebih banyak ruang untuk itu. Tetapi jika Anda pergi cukup dekat, ia ingin pergi ke sana. Jadi saya biarkan pergi dan akan tumbuh untuk mengisi blok. Jadi sekarang, ini adalah satu lingkaran. [Mengeong] DAVID J. Malan: Aku harfiah melakukan hal ini selamanya. Lagi dan lagi. Itu tidak terdengar alami. Biarkan aku pergi ke depan dan mengubah ini tidak satu detik, dua detik dan tekan Enter. Dan apa yang bagus tentang Scratch adalah bahwa Anda bisa program interaktif. Membuat perubahan, mungkin tekan Enter atau Putar lagi, dan itu hanya akan terus berjalan. Nah, sekarang mengapa tidak kita lakukan sesuatu yang manis sedikit? Daripada melakukan semuanya dari awal, biarkan aku pergi ke depan dan membuka muka membuat satu, bahwa saya pra-panggang, disebut "Pet Cat." Dan kami akan posting semua file-file ini secara online, dan permasalahan yang nol akan memberitahu Anda bagaimana untuk mengaksesnya dan membukanya. Dan perhatikan, ini cukup sederhana. Tapi sebelumnya, saya tampaknya telah meraih a "selamanya" blok, jadi saya punya satu lingkaran. Dan kemudian aku punya "jika" kondisi. Aku punya ekspresi Boolean. Jadi dalam bahasa Inggris, hanya melirik ini, terutama jika Anda belum pernah diprogram sebelumnya, hanya secara intuitif, apa yang terjadi ini harus dilakukan, program ini? [AUDIENCE CHATTER] DAVID J. Malan: Jika Anda hewan peliharaan kucing, kucing akan meow, kan? Karena "selamanya centang" adalah pointer mouse menyentuh kucing. Jadi harus jelas, dan aku tidak mengatakan ini sebelumnya, semua teka-teki ini potongan dan script yang kami menggabungkannya ke dalam, sehingga untuk berbicara, script ini identik dengan Program, benar-benar, milik kucing ini. Dan alasannya Ini-- karena pemberitahuan bagaimana ini kucing yang sama di sini disorot, di sini Anda dapat membuat kucing kedua atau anjing atau benar-benar apa pun yang Anda inginkan grafis. Anda dapat mengimpor sesuatu dari Photoshop, atau sejenisnya, dan mengintegrasikan sesuatu jika Anda ingin membuatnya untuk sebuah proyek. Dan apa yang akan Anda temukan, akhirnya, adalah bahwa Anda dapat menambahkan script, tambahkan puzzle potongan, untuk karakter individu. Jadi ini semua milik kucing tertentu. Jadi sekarang jika saya pergi ke depan dan bermain program ini, tidak ada yang terjadi. Tapi itu berjalan. Program ini dalam lingkaran selamanya, jenis menunggu apa yang harus terjadi? [AUDIENCE CHATTER] DAVID J. Malan: Untuk hewan peliharaan kucing. Jadi jika saya menggerakkan mouse saya terhadap him-- [Mengeong] DAVID J. Malan: Jadi sekarang Aku membelai kucing. Sementara itu, kita dapat memiliki cabang ganda. Biarkan aku pergi ke depan dan membuka up tidak hewan peliharaan kucing. Kami akan mengirimkan secara online ini juga. Ini adalah sedikit lebih kompleks, tapi tanpa mengatakan Anda bisa menebak mungkin apa yang akan terjadi. [Mengeong] DAVID J. Malan: Cat mengeong, waktu besar tua. Namun program ini tentu saja disebut "Jangan Pet Cat," jadi jelas, saya ingin hewan peliharaan kucing. [Menderu] DAVID J. Malan: Jangan hewan peliharaan kucing. Sekarang, mari kita lihat contoh lain di sini. Yang satu ini akan disebut "Hi, Hi, Hi," karena alasan yang akan menjadi jelas, karena segera setelah saya menjalankan thing-- ini [SEAL Barking] DAVID J. Malan: Sangat mudah untuk menulis program Scratch menjengkelkan. [SEAL Barking] DAVID J. Malan: Sekarang kita tidak akan pergi ke detail dengan semua ini, tapi melihat ada beberapa fitur baru di sini. Ada variabel, yang disebut "diredam," dan kemudian ada sekelompok kondisi. Dan untuk saat ini, biarkan aku hanya menggoda Anda dengan mengatakan bahwa jika orang ini terlalu mengganggu, Saya bisa memukul spasi dan ia berhenti. Karena peran yang dimainkan oleh dua script tersebut adalah sebagai berikut. Salah satunya adalah melakukan menggonggong setiap beberapa detik. Yang lain hanya menunggu bagi saya untuk memukul spasi. Dan jika saya memukul spasi, itu akan mengubah keadaan variabel ini, nilai variabel ini, yang tampaknya disebut "diredam," Aku tidak menelepon itu sesuatu yang membosankan seperti n, Aku menyebutnya kata dalam bahasa Inggris, "diredam." Dari 1 ke 0 atau 0 hingga 1. Dari benar palsu atau false menjadi true. Jadi Anda benar-benar dapat lihat sekarang, bahwa Anda bisa memiliki dua script, dua program yang berjalan secara bersamaan, dan keduanya mungkin duduk dalam satu lingkaran melakukan sesuatu. Menunggu manusia untuk melakukan sesuatu seperti memukul spasi. [SEAL Barking] DAVID J. Malan: Dan sekarang dia dalam perjalanan kembali. [SEAL Barking] DAVID J. Malan: Jadi apa lagi mungkin kita lakukan dengan contoh-contoh ini? Nah, mari kita pergi ke depan dan melakukan contoh dengan menghitung domba. Kami akan terus ini di sepanjang garis di sini of-- mari kita membuka contoh domba. Dan pemberitahuan, seperti sebelumnya, yang satu ini, Untungnya, sedikit kurang mengganggu. Setelah saya tekan bermain di sini- Oh tidak, ini menjengkelkan. Dia akan baa dengan beberapa probabilitas. Mari kita bermain ini lagi. [SHEEP BLEETING] DAVID J. Malan: Satu-satunya perbedaan adalah kami telah mengubah kostum, sehingga untuk berbicara, dan kita mengurangi separuh dan mengatakan apa itu jumlah sebenarnya adalah. Nah mari kita pergi ke depan dan mengambil satu langkah lebih jauh. Dan biarkan aku menggoda Anda dengan salah satu fitur lain di sini. Mari kita pergi ke depan dan membuka sebuah program yang disebut Threads. Begitu banyak seperti Anda dapat memiliki satu sprite, memiliki beberapa script, Anda dapat memiliki dua sprite, burung di kucing, masing-masing memiliki naskah mereka sendiri. Dan masing-masing dapat beroperasi secara bersamaan. Jika Anda pernah mendengar Kata "multithreading" komputer adalah "multithreaded" berarti dapat melakukan beberapa hal sekaligus, dan, memang, jadi bisa Scratch. Dan sekarang melihat burung adalah jenis bodoh. Hanya saja melakukan hal-hal secara acak, memantul dari layar. Jelas kucing telah diprogram untuk jenis memiliki kemampuan mencari untuk rumah di burung karena dia selalu menunjuk ke arahnya. Sampai akhirnya, ia menangkap burung yang sebenarnya. Jadi saya tidak akan berkutat pada rincian di sini, tapi Anda bisa jenis sekilas bentuk yang sama, beberapa "Jika" kondisi, beberapa variabel, mungkin beberapa loop, yang akhirnya melakukan hal yang sama. Sekarang biarkan aku pergi ke depan dan membuka sesuatu yang lain sama sekali, untuk menggoda sebagian dari Anda, terutama mereka lebih nyaman, apa yang Anda benar-benar dapat Anda lakukan dengan ini. Aku akan pergi ke depan dan membuka Tombol sini. Dan ini adalah super program sederhana-tampak, tapi lihat apa yang terjadi ketika Aku-- Perhatikan apa yang terjadi ketika saya membuka versi itu, di sini di browser, scratch.mit.edu. Dan ketika saya klik merah besar ini tombol, perhatikan apa yang terjadi. Jadi apa yang terjadi di sini? Sebenarnya ada kompleksitas yang lebih banyak terjadi di bawah tenda, meskipun saya telah menerapkan ini, atau terus terang, Dan Bradley telah menerapkan ini begitu sederhana. Dia telah merancang puzzle Scratch kustom sepotong, dikenal sebagai ekstensi Scratch, ia menyebutnya Beralih. Dan apa Beralih dilakukan adalah mengirimkan pesan melalui internet. Dan pesan itu sendiri terlihat sedikit samar. Tapi ini juga, Anda akan memahami pada akhir term. Pesan dia benar-benar mengirimkan terlihat sedikit sesuatu seperti ini. Ini hanya teks. Cryptic. Anda akan mengerti pada saat kita mendapatkan masalah memisahkan tujuh. Ini hanya mengirim pesan teks melalui internet ke server. Dan server yang, pada akhirnya, berbicara dengan bola lampu ini, yang memiliki salah satu bola lampu mewah di dalamnya yang, sendiri, berbicara ke Wi-Fi dalam jaringan di sini, di mana perangkat lokal di sini- dan, pada akhirnya, itu sebenarnya mengubah cahaya yang dan mematikan. Tapi kita bisa berbuat lebih banyak hal menarik masih. Perhatikan apa Dan juga lakukan bagi kita. Dia membuat beberapa sprite, masing-masing yang memiliki script menunggu klik. Dan jika saya klik merah, ia pergi merah. Jika saya mendapatkan biru, ia pergi kebiruan. Hijau, kuning, oranye. Dan semua ini terjadi dengan akan jalan keluar ke internet, kembali ke sini ke bola lampu, dan mematikan. Dan jika Anda percaya itu-- dan ini mungkin salah satu Scratch paling kompleks proyek seseorang implemented-- dia melakukannya, dalam keadilan, dalam satu hari. Dan itu adalah tantangan kita melempar Dan untuk ketika kita melihat memiliki lampu biner, kami memiliki Scratch, bagaimana dapat kita menggabungkan mereka? Dan, memang, ini benar-benar sesuatu yang ada di ruangan ini bisa lakukan dengan end-- semester Apakah dia reimplemented lampu biner menggunakan antarmuka yang sama yang pada iPad kami pada Rabu. Sehingga sekarang, jika aku benar-benar klik plus di sini, kita memiliki satu, dua, tiga. Saya dapat menekan 16 dan mengubah bahwa satu di. 128, dan sebagainya. Sekarang jika itu saja memiliki dan ditiup pikiran Anda, Anda bisa melakukan hal-hal yang jauh lebih mudah diakses, tidak melibatkan perangkat keras tentu. Hanya hal-hal pada layar itu sendiri. Dan, memang, apa yang kebanyakan siswa akhirnya melakukan semacam permainan, beberapa bagian dari karya seni, atau semacam animasi interaktif. Dan aku akan mengatakan satu dari kami favorit telah menjadi salah satu ini. Dan saya pikir jika kita bisa meredupkan lampu, kami akan mengarahkan sekilas di akhir Proyek Scratch dalam kesimpulan. Tapi apa yang Anda akan harus diingat, sebagai Aku bisa menggoda Anda dengan satu detail terakhir, sectioning akan dimulai minggu depan. Jam kerja akan dimulai minggu depan. Masalah set nol akan diposting CS50.harvard.edu hari ini. Dan Anda akan disambut di permasalahan yang nol untuk CS50 sendiri Zamyla Chan, yang Panduan sebagian besar penelusuran kami. Ini adalah video tertanam di set masalah yang akan memegang tangan Anda melalui banyak dari set up awal dan melalui banyak dari keputusan desain mungkin. Jadi, jika Anda sudah pernah emosi yang ketika mengambil tugas pekerjaan rumah dan bertanya-tanya, di mana saya mulai? Dia akan memiliki jawaban untuk Anda. Dan sekarang, program akhir dari salah satu pendahulu Anda untuk menjawab pertanyaan "Apa rubah katakan?" [MUSIC YLVIS, "APA YANG FOX KATAKAN?] YLVIS: (Menyanyi) Anjing pergi pakan. Cat berjalan meow. Burung pergi Tweet dan mouse pergi mencicit. Sapi berjalan moo. Frog pergi serak. Dan gajah berjalan tiupan. Bebek mengatakan dukun dan ikan pergi blub. Dan segel pergi ow ow ow, tetapi ada satu suara yang tidak ada yang tahu, apa rubah katakan? Dan DAVID J. Malan: Itu saja untuk CS50. Kita akan melihat Anda di Teka-teki Day dan pada hari Senin. [Tepuk Tangan] [MUSIC YLVIS, "APA YANG FOX SAY?"] Narator: Dan sekarang dalam pikiran, berdasarkan Daven Farnham. Hari ini saya tertembak di muka dengan buku telepon. Membingungkan, karena saya di rumah menonton online.